diff options
Diffstat (limited to 'clang/lib/AST/Interp/Integral.h')
-rw-r--r-- | clang/lib/AST/Interp/Integral.h | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/clang/lib/AST/Interp/Integral.h b/clang/lib/AST/Interp/Integral.h index 7cc788070de8..46cd611ee389 100644 --- a/clang/lib/AST/Interp/Integral.h +++ b/clang/lib/AST/Interp/Integral.h @@ -156,13 +156,12 @@ public: } template <typename T> - static typename std::enable_if<std::is_integral<T>::value, Integral>::type - from(T Value) { + static std::enable_if_t<std::is_integral<T>::value, Integral> from(T Value) { return Integral(Value); } template <unsigned SrcBits, bool SrcSign> - static typename std::enable_if<SrcBits != 0, Integral>::type + static std::enable_if_t<SrcBits != 0, Integral> from(Integral<SrcBits, SrcSign> Value) { return Integral(Value.V); } @@ -206,52 +205,52 @@ public: private: template <typename T> - static typename std::enable_if<std::is_signed<T>::value, bool>::type - CheckAddUB(T A, T B, T &R) { + static std::enable_if_t<std::is_signed<T>::value, bool> CheckAddUB(T A, T B, + T &R) { return llvm::AddOverflow<T>(A, B, R); } template <typename T> - static typename std::enable_if<std::is_unsigned<T>::value, bool>::type - CheckAddUB(T A, T B, T &R) { + static std::enable_if_t<std::is_unsigned<T>::value, bool> CheckAddUB(T A, T B, + T &R) { R = A + B; return false; } template <typename T> - static typename std::enable_if<std::is_signed<T>::value, bool>::type - CheckSubUB(T A, T B, T &R) { + static std::enable_if_t<std::is_signed<T>::value, bool> CheckSubUB(T A, T B, + T &R) { return llvm::SubOverflow<T>(A, B, R); } template <typename T> - static typename std::enable_if<std::is_unsigned<T>::value, bool>::type - CheckSubUB(T A, T B, T &R) { + static std::enable_if_t<std::is_unsigned<T>::value, bool> CheckSubUB(T A, T B, + T &R) { R = A - B; return false; } template <typename T> - static typename std::enable_if<std::is_signed<T>::value, bool>::type - CheckMulUB(T A, T B, T &R) { + static std::enable_if_t<std::is_signed<T>::value, bool> CheckMulUB(T A, T B, + T &R) { return llvm::MulOverflow<T>(A, B, R); } template <typename T> - static typename std::enable_if<std::is_unsigned<T>::value, bool>::type - CheckMulUB(T A, T B, T &R) { + static std::enable_if_t<std::is_unsigned<T>::value, bool> CheckMulUB(T A, T B, + T &R) { R = A * B; return false; } template <typename T, T Min, T Max> - static typename std::enable_if<std::is_signed<T>::value, bool>::type + static std::enable_if_t<std::is_signed<T>::value, bool> CheckRange(int64_t V) { return Min <= V && V <= Max; } template <typename T, T Min, T Max> - static typename std::enable_if<std::is_unsigned<T>::value, bool>::type + static std::enable_if_t<std::is_unsigned<T>::value, bool> CheckRange(int64_t V) { return V >= 0 && static_cast<uint64_t>(V) <= Max; } |