Use std::is_final directly

The workaround isn't needed anymore because all toolchains should support it.

llvm-svn: 368910
This commit is contained in:
JF Bastien 2019-08-14 20:13:49 +00:00
parent ee6f3dd14d
commit 9953c74fb6
2 changed files with 1 additions and 12 deletions

View File

@ -249,9 +249,7 @@ class TrailingObjects : private trailing_objects_internal::TrailingObjectsImpl<
// because BaseTy isn't complete at class instantiation time, but
// will be by the time this function is instantiated.
static void verifyTrailingObjectsAssertions() {
#ifdef LLVM_IS_FINAL
static_assert(LLVM_IS_FINAL(BaseTy), "BaseTy must be final.");
#endif
static_assert(std::is_final<BaseTy>(), "BaseTy must be final.");
}
// These two methods are the base of the recursion for this method.

View File

@ -189,13 +189,4 @@ class is_trivially_copyable<T*> : public std::true_type {
} // end namespace llvm
// If the compiler supports detecting whether a class is final, define
// an LLVM_IS_FINAL macro. If it cannot be defined properly, this
// macro will be left undefined.
#if defined(__cplusplus) || defined(_MSC_VER)
#define LLVM_IS_FINAL(Ty) std::is_final<Ty>()
#elif __has_feature(is_final) || LLVM_GNUC_PREREQ(4, 7, 0)
#define LLVM_IS_FINAL(Ty) __is_final(Ty)
#endif
#endif // LLVM_SUPPORT_TYPE_TRAITS_H