diff options
Diffstat (limited to 'contrib/llvm-project/clang/lib/AST/Interp/Boolean.h')
-rw-r--r-- | contrib/llvm-project/clang/lib/AST/Interp/Boolean.h | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/contrib/llvm-project/clang/lib/AST/Interp/Boolean.h b/contrib/llvm-project/clang/lib/AST/Interp/Boolean.h index 336f7941dfc4..23f728603676 100644 --- a/contrib/llvm-project/clang/lib/AST/Interp/Boolean.h +++ b/contrib/llvm-project/clang/lib/AST/Interp/Boolean.h @@ -45,15 +45,10 @@ class Boolean final { Boolean operator-(const Boolean &Other) const { return Boolean(V - Other.V); } Boolean operator~() const { return Boolean(true); } - explicit operator int8_t() const { return V; } - explicit operator uint8_t() const { return V; } - explicit operator int16_t() const { return V; } - explicit operator uint16_t() const { return V; } - explicit operator int32_t() const { return V; } - explicit operator uint32_t() const { return V; } - explicit operator int64_t() const { return V; } - explicit operator uint64_t() const { return V; } - explicit operator bool() const { return V; } + template <typename Ty, typename = std::enable_if_t<std::is_integral_v<Ty>>> + explicit operator Ty() const { + return V; + } APSInt toAPSInt() const { return APSInt(APInt(1, static_cast<uint64_t>(V), false), true); @@ -61,7 +56,7 @@ class Boolean final { APSInt toAPSInt(unsigned NumBits) const { return APSInt(toAPSInt().zextOrTrunc(NumBits), true); } - APValue toAPValue() const { return APValue(toAPSInt()); } + APValue toAPValue(const ASTContext &) const { return APValue(toAPSInt()); } Boolean toUnsigned() const { return *this; } |