1 //===--- TypeTraits.h - C++ Type Traits Support Enumerations ----*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
11 /// \brief Defines enumerations for the type traits support.
13 //===----------------------------------------------------------------------===//
15 #ifndef LLVM_CLANG_BASIC_TYPETRAITS_H
16 #define LLVM_CLANG_BASIC_TYPETRAITS_H
20 /// \brief Names for traits that operate specifically on types.
23 UTT_HasNothrowMoveAssign,
25 UTT_HasNothrowConstructor,
27 UTT_HasTrivialMoveAssign,
29 UTT_HasTrivialDefaultConstructor,
30 UTT_HasTrivialMoveConstructor,
31 UTT_HasTrivialDestructor,
32 UTT_HasVirtualDestructor,
50 UTT_IsLvalueReference,
51 UTT_IsMemberFunctionPointer,
52 UTT_IsMemberObjectPointer,
54 UTT_IsNothrowDestructible,
60 UTT_IsRvalueReference,
66 UTT_IsTriviallyCopyable,
71 UTT_Last = UTT_IsVolatile,
77 BTT_IsNothrowAssignable,
78 BTT_IsTriviallyAssignable,
79 BTT_Last = BTT_IsTriviallyAssignable,
81 TT_IsNothrowConstructible,
82 TT_IsTriviallyConstructible
85 /// \brief Names for the array type traits.
91 /// \brief Names for the "expression or type" traits.
92 enum UnaryExprOrTypeTrait {
96 UETT_OpenMPRequiredSimdAlign,