reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

Declarations

tools/clang/include/clang/AST/TemplateName.h
   32 enum OverloadedOperatorKind : int;

References

include/llvm/ADT/Optional.h
  144     T value;
  172   T &getValue() LLVM_LVALUE_FUNCTION noexcept {
  176   T const &getValue() const LLVM_LVALUE_FUNCTION noexcept {
  181   T &&getValue() && noexcept {
  206       ::new ((void *)std::addressof(value)) T(std::move(y));
  216   optional_detail::OptionalStorage<T> Storage;
  219   using value_type = T;
  224   Optional(const T &y) : Storage(optional_detail::in_place_t{}, y) {}
  227   Optional(T &&y) : Storage(optional_detail::in_place_t{}, std::move(y)) {}
  230   Optional &operator=(T &&y) {
  241   static inline Optional create(const T *y) {
  245   Optional &operator=(const T &y) {
  253   const T *getPointer() const { return &Storage.getValue(); }
  254   T *getPointer() { return &Storage.getValue(); }
  255   const T &getValue() const LLVM_LVALUE_FUNCTION { return Storage.getValue(); }
  256   T &getValue() LLVM_LVALUE_FUNCTION { return Storage.getValue(); }
  260   const T *operator->() const { return getPointer(); }
  261   T *operator->() { return getPointer(); }
  262   const T &operator*() const LLVM_LVALUE_FUNCTION { return getValue(); }
  263   T &operator*() LLVM_LVALUE_FUNCTION { return getValue(); }
  266   constexpr T getValueOr(U &&value) const LLVM_LVALUE_FUNCTION {
  271   T &&getValue() && { return std::move(Storage.getValue()); }
  272   T &&operator*() && { return std::move(Storage.getValue()); }
  275   T getValueOr(U &&value) && {
include/llvm/ADT/SmallVector.h
  641   template <typename... ArgTypes> reference emplace_back(ArgTypes &&... Args) {
include/llvm/ADT/StringSwitch.h
   48   Optional<T> Result;
   67   StringSwitch &Case(StringLiteral S, T Value) {
   74   StringSwitch& EndsWith(StringLiteral S, T Value) {
   81   StringSwitch& StartsWith(StringLiteral S, T Value) {
   88   StringSwitch &Cases(StringLiteral S0, StringLiteral S1, T Value) {
   93                       T Value) {
   98                       StringLiteral S3, T Value) {
  103                       StringLiteral S3, StringLiteral S4, T Value) {
  109                       T Value) {
  115                       StringLiteral S6, T Value) {
  121                       StringLiteral S6, StringLiteral S7, T Value) {
  128                       T Value) {
  135                       StringLiteral S9, T Value) {
  140   StringSwitch &CaseLower(StringLiteral S, T Value) {
  147   StringSwitch &EndsWithLower(StringLiteral S, T Value) {
  154   StringSwitch &StartsWithLower(StringLiteral S, T Value) {
  161   StringSwitch &CasesLower(StringLiteral S0, StringLiteral S1, T Value) {
  166                            T Value) {
  171                            StringLiteral S3, T Value) {
  176                            StringLiteral S3, StringLiteral S4, T Value) {
  181   R Default(T Value) {
  181   R Default(T Value) {
  188   operator R() {
include/llvm/Support/type_traits.h
   91     T t;
  122     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<const F &>(), std::true_type{});
  122     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<const F &>(), std::true_type{});
  122     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<const F &>(), std::true_type{});
  130     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<F &&>(), std::true_type{});
  130     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<F &&>(), std::true_type{});
  130     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<F &&>(), std::true_type{});
  145       std::is_copy_constructible<detail::trivial_helper<T>>::value;
  147       !std::is_copy_constructible<T>::value;
  151       std::is_move_constructible<detail::trivial_helper<T>>::value;
  153       !std::is_move_constructible<T>::value;
  157       is_copy_assignable<detail::trivial_helper<T>>::value;
  159       !is_copy_assignable<T>::value;
  163       is_move_assignable<detail::trivial_helper<T>>::value;
  165       !is_move_assignable<T>::value;
  169       std::is_destructible<detail::trivial_helper<T>>::value;
tools/clang/include/clang/AST/ASTContext.h
 2006                                         OverloadedOperatorKind Operator) const;
tools/clang/include/clang/AST/Decl.h
 2450   OverloadedOperatorKind getOverloadedOperator() const;
tools/clang/include/clang/AST/DeclCXX.h
 1935   static bool isStaticOverloadedOperator(OverloadedOperatorKind OOK) {
tools/clang/include/clang/AST/DeclarationName.h
  106   OverloadedOperatorKind Kind = OO_None;
  462   OverloadedOperatorKind getCXXOverloadedOperator() const {
  639   DeclarationName getCXXOperatorName(OverloadedOperatorKind Op) {
tools/clang/include/clang/AST/Expr.h
 2110   static Opcode getOverloadedOpcode(OverloadedOperatorKind OO, bool Postfix);
 2114   static OverloadedOperatorKind getOverloadedOperator(Opcode Opc);
 3469   static Opcode getOverloadedOpcode(OverloadedOperatorKind OO);
 3473   static OverloadedOperatorKind getOverloadedOperator(Opcode Opc);
tools/clang/include/clang/AST/ExprCXX.h
   89   CXXOperatorCallExpr(OverloadedOperatorKind OpKind, Expr *Fn,
   98   Create(const ASTContext &Ctx, OverloadedOperatorKind OpKind, Expr *Fn,
  107   OverloadedOperatorKind getOperator() const {
  112   static bool isAssignmentOp(OverloadedOperatorKind Opc) {
  132     OverloadedOperatorKind Operator = getOperator();
tools/clang/include/clang/AST/TemplateName.h
  463     OverloadedOperatorKind Operator;
  486                         OverloadedOperatorKind Operator)
  491                         OverloadedOperatorKind Operator,
  514   OverloadedOperatorKind getOperator() const {
  535                       OverloadedOperatorKind Operator) {
tools/clang/include/clang/Basic/OperatorKinds.h
   31 const char *getOperatorSpelling(OverloadedOperatorKind Operator);
   35 inline OverloadedOperatorKind
   36 getRewrittenOverloadedOperator(OverloadedOperatorKind Kind) {
tools/clang/include/clang/Sema/DeclSpec.h
  955     OverloadedOperatorKind Operator;
 1049                              OverloadedOperatorKind Op,
tools/clang/include/clang/Sema/Overload.h
  916       OperatorRewriteInfo(OverloadedOperatorKind Op, bool AllowRewritten)
  920       OverloadedOperatorKind OriginalOperator;
  949       bool shouldAddReversed(OverloadedOperatorKind Op);
tools/clang/include/clang/Sema/ParsedTemplate.h
  166     OverloadedOperatorKind Operator;
  196            OverloadedOperatorKind OperatorKind,
  222                          OverloadedOperatorKind OperatorKind,
tools/clang/include/clang/Sema/Sema.h
 3158   void AddMemberOperatorCandidates(OverloadedOperatorKind Op,
 3166   void AddBuiltinOperatorCandidates(OverloadedOperatorKind Op,
 3556   void LookupOverloadedOperatorName(OverloadedOperatorKind Op, Scope *S,
tools/clang/include/clang/Serialization/ASTBitCodes.h
 2121       OverloadedOperatorKind getOperatorKind() const {
tools/clang/lib/AST/ASTContext.cpp
 7802                                      OverloadedOperatorKind Operator) const {
tools/clang/lib/AST/Decl.cpp
 3429 OverloadedOperatorKind FunctionDecl::getOverloadedOperator() const {
tools/clang/lib/AST/DeclCXX.cpp
 1974   OverloadedOperatorKind OOK = getDeclName().getCXXOverloadedOperator();
tools/clang/lib/AST/Expr.cpp
 1300 UnaryOperator::getOverloadedOpcode(OverloadedOperatorKind OO, bool Postfix) {
 1315 OverloadedOperatorKind UnaryOperator::getOverloadedOperator(Opcode Opc) {
 2039 BinaryOperator::getOverloadedOpcode(OverloadedOperatorKind OO) {
 2077 OverloadedOperatorKind BinaryOperator::getOverloadedOperator(Opcode Opc) {
 2078   static const OverloadedOperatorKind OverOps[] = {
tools/clang/lib/AST/ExprCXX.cpp
  614 CXXOperatorCallExpr::CXXOperatorCallExpr(OverloadedOperatorKind OpKind,
  636     const ASTContext &Ctx, OverloadedOperatorKind OpKind, Expr *Fn,
  661   OverloadedOperatorKind Kind = getOperator();
tools/clang/lib/AST/ItaniumMangle.cpp
  508   void mangleOperatorName(OverloadedOperatorKind OO, unsigned Arity);
 2150 CXXNameMangler::mangleOperatorName(OverloadedOperatorKind OO, unsigned Arity) {
tools/clang/lib/AST/MicrosoftMangle.cpp
  343   void mangleOperatorName(OverloadedOperatorKind OO, SourceLocation Loc);
 1163 void MicrosoftCXXNameMangler::mangleOperatorName(OverloadedOperatorKind OO,
tools/clang/lib/AST/OpenMPClause.cpp
 1422     OverloadedOperatorKind OOK =
 1445     OverloadedOperatorKind OOK =
 1467     OverloadedOperatorKind OOK =
tools/clang/lib/AST/StmtPrinter.cpp
 1643   OverloadedOperatorKind Kind = Node->getOperator();
tools/clang/lib/Analysis/ThreadSafety.cpp
 2054     auto OEop = OE->getOperator();
tools/clang/lib/Analysis/ThreadSafetyCommon.cpp
  420     OverloadedOperatorKind k = OCE->getOperator();
tools/clang/lib/Basic/IdentifierTable.cpp
  685 const char *clang::getOperatorSpelling(OverloadedOperatorKind Operator) {
tools/clang/lib/CodeGen/CodeGenModule.cpp
 1843     auto Kind = FD->getDeclName().getCXXOverloadedOperator();
tools/clang/lib/Index/IndexBody.cpp
  109           OverloadedOperatorKind Op = CXXOp->getOperator();
tools/clang/lib/Parse/ParseExprCXX.cpp
 2369     OverloadedOperatorKind OpKind =
 2451   OverloadedOperatorKind Op = OO_None;
tools/clang/lib/Parse/ParseOpenMP.cpp
  177   OverloadedOperatorKind OOK = OO_None;
 2402     auto OOK = OO_None;
tools/clang/lib/Parse/ParseTemplate.cpp
 1168     OverloadedOperatorKind OpKind =
tools/clang/lib/Sema/DeclSpec.cpp
 1369                                           OverloadedOperatorKind Op,
tools/clang/lib/Sema/SemaChecking.cpp
 9994     OverloadedOperatorKind Op = FD->getOverloadedOperator();
tools/clang/lib/Sema/SemaDeclCXX.cpp
13845   OverloadedOperatorKind Op = FnDecl->getOverloadedOperator();
tools/clang/lib/Sema/SemaExceptionSpec.cpp
  277   OverloadedOperatorKind OO = New->getDeclName().getCXXOverloadedOperator();
tools/clang/lib/Sema/SemaExpr.cpp
 7662     OverloadedOperatorKind OO = Call->getOperator();
13226   OverloadedOperatorKind Kind = FD->getOverloadedOperator();
13316   OverloadedOperatorKind OverOp
13324     if (OverloadedOperatorKind ExtraOp = getRewrittenOverloadedOperator(OverOp))
13747     OverloadedOperatorKind OverOp = UnaryOperator::getOverloadedOperator(Opc);
tools/clang/lib/Sema/SemaExprCXX.cpp
 1760     OverloadedOperatorKind Kind = FD.getDeclName().getCXXOverloadedOperator();
 4466 static bool HasNoThrowOperator(const RecordType *RT, OverloadedOperatorKind Op,
tools/clang/lib/Sema/SemaInit.cpp
 6749       auto OO = Callee->getOverloadedOperator();
 6750       return OO == OverloadedOperatorKind::OO_Subscript ||
 6751              OO == OverloadedOperatorKind::OO_Star;
tools/clang/lib/Sema/SemaLookup.cpp
 3039 void Sema::LookupOverloadedOperatorName(OverloadedOperatorKind Op, Scope *S,
tools/clang/lib/Sema/SemaOpenMP.cpp
   75       llvm::SmallVector<std::pair<Expr *, OverloadedOperatorKind>, 4>;
 5392                        OverloadedOperatorKind OOK = OO_Amp);
 5782       auto Op = CE->getOperator();
 6408     Expr *Inc, OverloadedOperatorKind OOK) {
13057   OverloadedOperatorKind OOK = DN.getCXXOverloadedOperator();
14386       OverloadedOperatorKind OOK = OO_None;
tools/clang/lib/Sema/SemaOverload.cpp
  852     OverloadedOperatorKind Op) {
 7428 void Sema::AddMemberOperatorCandidates(OverloadedOperatorKind Op,
 8058   void addPlusPlusMinusMinusArithmeticOverloads(OverloadedOperatorKind Op) {
 8346   void addBinaryPlusOrMinusPointerOverloads(OverloadedOperatorKind Op) {
 8489   void addBinaryBitwiseArithmeticOverloads(OverloadedOperatorKind Op) {
 8932 void Sema::AddBuiltinOperatorCandidates(OverloadedOperatorKind Op,
12195 DiagnoseTwoPhaseOperatorLookup(Sema &SemaRef, OverloadedOperatorKind Op,
12535   OverloadedOperatorKind Op = UnaryOperator::getOverloadedOperator(Opc);
12733   OverloadedOperatorKind Op = BinaryOperator::getOverloadedOperator(Opc);
12794   OverloadedOperatorKind ExtraOp =
12865         OverloadedOperatorKind ChosenOp =
tools/clang/lib/Sema/TreeTransform.h
 1201                                    OverloadedOperatorKind Operator,
13170                                             OverloadedOperatorKind Operator,
tools/clang/lib/StaticAnalyzer/Checkers/InnerPointerChecker.cpp
  119     OverloadedOperatorKind Opc = MemOpCall->getOriginExpr()->getOperator();
tools/clang/lib/StaticAnalyzer/Checkers/IteratorChecker.cpp
  184                         OverloadedOperatorKind Op) const;
  187                          OverloadedOperatorKind Op) const;
  194   void handleRandomIncrOrDecr(CheckerContext &C, OverloadedOperatorKind Op,
  220   void verifyRandomIncrOrDecr(CheckerContext &C, OverloadedOperatorKind Op,
  226   IteratorPosition advancePosition(CheckerContext &C, OverloadedOperatorKind Op,
  275 bool isComparisonOperator(OverloadedOperatorKind OK);
  290 bool isAssignmentOperator(OverloadedOperatorKind OK);
  291 bool isSimpleComparisonOperator(OverloadedOperatorKind OK);
  292 bool isAccessOperator(OverloadedOperatorKind OK);
  293 bool isDereferenceOperator(OverloadedOperatorKind OK);
  294 bool isIncrementOperator(OverloadedOperatorKind OK);
  295 bool isDecrementOperator(OverloadedOperatorKind OK);
  296 bool isRandomIncrOrDecrOperator(OverloadedOperatorKind OK);
  566     const auto Op = Func->getOverloadedOperator();
  854                                        OverloadedOperatorKind Op) const {
  897                                         OverloadedOperatorKind Op) const {
  986                                              OverloadedOperatorKind Op,
 1024                                              OverloadedOperatorKind Op,
 1562                                                   OverloadedOperatorKind Op,
 1680     const auto OPK = Method->getOverloadedOperator();
 1696 bool isComparisonOperator(OverloadedOperatorKind OK) {
 1837 bool isAssignmentOperator(OverloadedOperatorKind OK) { return OK == OO_Equal; }
 1839 bool isSimpleComparisonOperator(OverloadedOperatorKind OK) {
 1843 bool isAccessOperator(OverloadedOperatorKind OK) {
 1848 bool isDereferenceOperator(OverloadedOperatorKind OK) {
 1853 bool isIncrementOperator(OverloadedOperatorKind OK) {
 1857 bool isDecrementOperator(OverloadedOperatorKind OK) {
 1861 bool isRandomIncrOrDecrOperator(OverloadedOperatorKind OK) {
 1874     const auto OPK = Method->getOverloadedOperator();
tools/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
  950   OverloadedOperatorKind Kind = FD->getOverloadedOperator();
 1649       OverloadedOperatorKind Kind = FD->getOverloadedOperator();
tools/clang/lib/StaticAnalyzer/Checkers/MoveChecker.cpp
  656     OverloadedOperatorKind OOK = MethodDecl->getOverloadedOperator();
tools/clang/tools/extra/clang-tidy/bugprone/AssertSideEffectCheck.cpp
   42     OverloadedOperatorKind OpKind = OpCallExpr->getOperator();
tools/clang/tools/extra/clang-tidy/misc/NewDeleteOverloadsCheck.cpp
   64 OverloadedOperatorKind getCorrespondingOverload(const FunctionDecl *FD) {
   80 const char *getOperatorName(OverloadedOperatorKind K) {
tools/clang/tools/extra/clang-tidy/readability/ImplicitBoolConversionCheck.cpp
   66 bool areParensNeededForOverloadedOperator(OverloadedOperatorKind OperatorKind) {
tools/clang/tools/extra/clang-tidy/readability/SimplifyBooleanExprCheck.cpp
  101 std::pair<OverloadedOperatorKind, StringRef> OperatorNames[] = {
  105 StringRef getOperatorName(OverloadedOperatorKind OpKind) {
  114 std::pair<OverloadedOperatorKind, OverloadedOperatorKind> OppositeOverloads[] =
  114 std::pair<OverloadedOperatorKind, OverloadedOperatorKind> OppositeOverloads[] =
  120   const OverloadedOperatorKind Opcode = OpCall->getOperator();
tools/clang/tools/libclang/CIndex.cpp
 6977     const OverloadedOperatorKind Kind = OCE->getOperator();
tools/lldb/include/lldb/Symbol/ClangASTContext.h
  248                          clang::OverloadedOperatorKind &op_kind);
  317       bool is_method, clang::OverloadedOperatorKind op_kind,
tools/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
 2190   clang::OverloadedOperatorKind op_kind = clang::NUM_OVERLOADED_OPERATORS;
tools/lldb/source/Symbol/ClangASTContext.cpp
  341                                  clang::OverloadedOperatorKind &op_kind) {
 1647                                   clang::OverloadedOperatorKind op_kind,
 1666     bool is_method, clang::OverloadedOperatorKind op_kind,
 2029   clang::OverloadedOperatorKind op_kind = clang::NUM_OVERLOADED_OPERATORS;
 8191     clang::OverloadedOperatorKind op_kind = clang::NUM_OVERLOADED_OPERATORS;
usr/include/c++/7.4.0/bits/move.h
   46     inline _GLIBCXX_CONSTEXPR _Tp*
   47     __addressof(_Tp& __r) _GLIBCXX_NOEXCEPT
   72     constexpr _Tp&&
   73     forward(typename std::remove_reference<_Tp>::type& __t) noexcept
   83     constexpr _Tp&&
   84     forward(typename std::remove_reference<_Tp>::type&& __t) noexcept
   98     move(_Tp&& __t) noexcept
  136     inline _GLIBCXX17_CONSTEXPR _Tp*
  137     addressof(_Tp& __r) noexcept
  143     const _Tp* addressof(const _Tp&&) = delete;
  143     const _Tp* addressof(const _Tp&&) = delete;
usr/include/c++/7.4.0/bits/stl_pair.h
  100 	return __and_<is_constructible<_T1, const _U1&>,
  100 	return __and_<is_constructible<_T1, const _U1&>,
  101 		      is_constructible<_T2, const _U2&>>::value;
  101 		      is_constructible<_T2, const _U2&>>::value;
  107 	return __and_<is_convertible<const _U1&, _T1>,
  107 	return __and_<is_convertible<const _U1&, _T1>,
  108 		      is_convertible<const _U2&, _T2>>::value;
  108 		      is_convertible<const _U2&, _T2>>::value;
  114 	return __and_<is_constructible<_T1, _U1&&>,
  114 	return __and_<is_constructible<_T1, _U1&&>,
  115 		      is_constructible<_T2, _U2&&>>::value;
  115 		      is_constructible<_T2, _U2&&>>::value;
  121 	return __and_<is_convertible<_U1&&, _T1>,
  121 	return __and_<is_convertible<_U1&&, _T1>,
  122 		      is_convertible<_U2&&, _T2>>::value;
  122 		      is_convertible<_U2&&, _T2>>::value;
  128 	using __do_converts = __and_<is_convertible<const _U1&, _T1>,
  128 	using __do_converts = __and_<is_convertible<const _U1&, _T1>,
  129 				  is_convertible<_U2&&, _T2>>;
  129 				  is_convertible<_U2&&, _T2>>;
  133 	return __and_<is_constructible<_T1, const _U1&>,
  133 	return __and_<is_constructible<_T1, const _U1&>,
  134 		      is_constructible<_T2, _U2&&>,
  134 		      is_constructible<_T2, _U2&&>,
  142 	using __do_converts = __and_<is_convertible<_U1&&, _T1>,
  142 	using __do_converts = __and_<is_convertible<_U1&&, _T1>,
  143 				  is_convertible<const _U2&, _T2>>;
  143 				  is_convertible<const _U2&, _T2>>;
  147 	return __and_<is_constructible<_T1, _U1&&>,
  147 	return __and_<is_constructible<_T1, _U1&&>,
  148 		      is_constructible<_T2, const _U2&&>,
  148 		      is_constructible<_T2, const _U2&&>,
  209     : private __pair_base<_T1, _T2>
  209     : private __pair_base<_T1, _T2>
  211       typedef _T1 first_type;    /// @c first_type is the first bound type
  212       typedef _T2 second_type;   /// @c second_type is the second bound type
  214       _T1 first;                 /// @c first is a copy of the first object
  215       _T2 second;                /// @c second is a copy of the second object
  252       using _PCCP = _PCC<true, _T1, _T2>;
  252       using _PCCP = _PCC<true, _T1, _T2>;
  260       constexpr pair(const _T1& __a, const _T2& __b)
  260       constexpr pair(const _T1& __a, const _T2& __b)
  269       explicit constexpr pair(const _T1& __a, const _T2& __b)
  269       explicit constexpr pair(const _T1& __a, const _T2& __b)
  283 			    _T1, _T2>;
  283 			    _T1, _T2>;
  311        constexpr pair(_U1&& __x, const _T2& __y)
  311        constexpr pair(_U1&& __x, const _T2& __y)
  318        explicit constexpr pair(_U1&& __x, const _T2& __y)
  325        constexpr pair(const _T1& __x, _U2&& __y)
  325        constexpr pair(const _T1& __x, _U2&& __y)
  332        explicit pair(const _T1& __x, _U2&& __y)
  341 	constexpr pair(_U1&& __x, _U2&& __y)
  341 	constexpr pair(_U1&& __x, _U2&& __y)
  342 	: first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { }
  342 	: first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { }
  379 		__and_<is_copy_assignable<_T1>,
  380 		       is_copy_assignable<_T2>>::value,
  390 		__and_<is_move_assignable<_T1>,
  391 		       is_move_assignable<_T2>>::value,
  403 				is_assignable<_T2&, const _U2&>>::value,
  403 				is_assignable<_T2&, const _U2&>>::value,
  405 	operator=(const pair<_U1, _U2>& __p)
  414 				is_assignable<_T2&, _U2&&>>::value,
  414 				is_assignable<_T2&, _U2&&>>::value,
  416 	operator=(pair<_U1, _U2>&& __p)
usr/include/c++/7.4.0/type_traits
  215     : public __is_void_helper<typename remove_cv<_Tp>::type>::type
  326     : public __is_integral_helper<typename remove_cv<_Tp>::type>::type
  354     : public __is_floating_point_helper<typename remove_cv<_Tp>::type>::type
  581     : public __or_<is_lvalue_reference<_Tp>,
  582                    is_rvalue_reference<_Tp>>::type
  588     : public __or_<is_integral<_Tp>, is_floating_point<_Tp>>::type
  588     : public __or_<is_integral<_Tp>, is_floating_point<_Tp>>::type
  601     : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>,
  601     : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>,
  602                           is_void<_Tp>>>::type
  611     : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
  611     : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
  611     : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
  612                    is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type
  612                    is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type
  638     : public __or_<is_object<_Tp>, is_reference<_Tp>>::type
  638     : public __or_<is_object<_Tp>, is_reference<_Tp>>::type
  762     typename add_rvalue_reference<_Tp>::type declval() noexcept;
  777     : public __and_<is_array<_Tp>, __not_<extent<_Tp>>>
  777     : public __and_<is_array<_Tp>, __not_<extent<_Tp>>>
  825     : public __is_destructible_safe<_Tp>::type
  889       typedef decltype(__test<_Tp>(0)) type;
  894     : public __and_<__not_<is_void<_Tp>>,
  895                     __is_default_constructible_impl<_Tp>>
  915     : public __is_default_constructible_atom<_Tp>::type
  921     : public __is_default_constructible_safe<_Tp>::type
  984       typedef decltype(__test<_Tp, _Arg>(0)) type;
  989     : public __and_<is_destructible<_Tp>,
  990                     __is_direct_constructible_impl<_Tp, _Arg>>
 1072 			 __is_direct_constructible_ref_cast<_Tp, _Arg>,
 1073 			 __is_direct_constructible_new_safe<_Tp, _Arg>
 1079     : public __is_direct_constructible_new<_Tp, _Arg>::type
 1119     : public __is_direct_constructible<_Tp, _Arg>
 1130     : public __is_constructible_impl<_Tp, _Args...>::type
 1142     : public is_constructible<_Tp, const _Tp&>
 1142     : public is_constructible<_Tp, const _Tp&>
 1148     : public __is_copy_constructible_impl<_Tp>
 1160     : public is_constructible<_Tp, _Tp&&>
 1160     : public is_constructible<_Tp, _Tp&&>
 1166     : public __is_move_constructible_impl<_Tp>
 1286     : public is_assignable<_Tp&, const _Tp&>
 1286     : public is_assignable<_Tp&, const _Tp&>
 1292     : public __is_copy_assignable_impl<_Tp>
 1304     : public is_assignable<_Tp&, _Tp&&>
 1304     : public is_assignable<_Tp&, _Tp&&>
 1310     : public __is_move_assignable_impl<_Tp>
 1352     : public is_nothrow_assignable<_Tp&, _Tp&&>
 1352     : public is_nothrow_assignable<_Tp&, _Tp&&>
 1358     : public __is_nt_move_assignable_impl<_Tp>
 1377     static void __helper(const _Tp&);
 1380     static true_type __test(const _Tp&,
 1381                             decltype(__helper<const _Tp&>({}))* = 0);
 1390     typedef decltype(__test(declval<_Tp>())) type;
 1395       : public __is_implicitly_default_constructible_impl<_Tp>::type
 1400       : public __and_<is_default_constructible<_Tp>,
 1401                       __is_implicitly_default_constructible_safe<_Tp>>
 1526 	static void __test_aux(_To1);
 1538       typedef decltype(__test<_From, _To>(0)) type;
 1545     : public __is_convertible_helper<_From, _To>::type
 1554     { typedef _Tp     type; };
 1563     { typedef _Tp     type; };
 1574       remove_const<typename remove_volatile<_Tp>::type>::type     type;
 1629     { typedef _Tp   type; };
 1633     { typedef _Tp   type; };
 1659     { typedef _Tp&&   type; };
 1664     : public __add_rvalue_reference_helper<_Tp>