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,
51 UTT_IsLvalueReference,
52 UTT_IsMemberFunctionPointer,
53 UTT_IsMemberObjectPointer,
55 UTT_IsNothrowDestructible,
61 UTT_IsRvalueReference,
67 UTT_IsTriviallyCopyable,
68 UTT_IsTriviallyDestructible,
73 UTT_HasUniqueObjectRepresentations,
74 UTT_Last = UTT_HasUniqueObjectRepresentations,
81 BTT_IsNothrowAssignable,
82 BTT_IsTriviallyAssignable,
83 BTT_Last = BTT_IsTriviallyAssignable,
85 TT_IsNothrowConstructible,
86 TT_IsTriviallyConstructible
89 /// \brief Names for the array type traits.
95 /// \brief Names for the "expression or type" traits.
96 enum UnaryExprOrTypeTrait {
100 UETT_OpenMPRequiredSimdAlign,