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,
64 UTT_IsTriviallyCopyable,
71 /// \brief Names for the binary type traits.
72 enum BinaryTypeTrait {
78 BTT_IsTriviallyAssignable
81 /// \brief Names for the array type traits.
87 /// \brief Names for the "expression or type" traits.
88 enum UnaryExprOrTypeTrait {
94 /// \brief Names for type traits that operate specifically on types.
96 TT_IsTriviallyConstructible