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_TYPETRAITS_H
16 #define LLVM_CLANG_TYPETRAITS_H
20 /// \brief Names for the unary type traits.
23 UTT_HasNothrowMoveAssign,
25 UTT_HasNothrowConstructor,
27 UTT_HasTrivialMoveAssign,
29 UTT_HasTrivialDefaultConstructor,
30 UTT_HasTrivialMoveConstructor,
31 UTT_HasTrivialDestructor,
32 UTT_HasVirtualDestructor,
49 UTT_IsLvalueReference,
50 UTT_IsMemberFunctionPointer,
51 UTT_IsMemberObjectPointer,
58 UTT_IsRvalueReference,
63 UTT_IsTriviallyCopyable,
70 /// \brief Names for the binary type traits.
71 enum BinaryTypeTrait {
77 BTT_IsTriviallyAssignable
80 /// \brief Names for the array type traits.
86 /// \brief Names for the "expression or type" traits.
87 enum UnaryExprOrTypeTrait {
93 /// \brief Names for type traits that operate specifically on types.
95 TT_IsTriviallyConstructible