|
|
|
@ -557,7 +557,7 @@ struct _LIBCPP_TEMPLATE_VIS is_same : _BoolConstant<__is_same(_Tp, _Up)> { };
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp, class _Up>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_same_v = __is_same(_Tp, _Up);
|
|
|
|
|
inline constexpr bool is_same_v = __is_same(_Tp, _Up);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else
|
|
|
|
@ -567,8 +567,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_same<_Tp, _Tp> :
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp, class _Up>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_same_v
|
|
|
|
|
= is_same<_Tp, _Up>::value;
|
|
|
|
|
inline constexpr bool is_same_v = is_same<_Tp, _Up>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // __is_same
|
|
|
|
@ -614,7 +613,7 @@ struct _LIBCPP_TEMPLATE_VIS is_const : _BoolConstant<__is_const(_Tp)> { };
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_const_v = __is_const(_Tp);
|
|
|
|
|
inline constexpr bool is_const_v = __is_const(_Tp);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else
|
|
|
|
@ -624,8 +623,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_const<_Tp const> : public tr
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_const_v
|
|
|
|
|
= is_const<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_const_v = is_const<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // __has_keyword(__is_const)
|
|
|
|
@ -639,7 +637,7 @@ struct _LIBCPP_TEMPLATE_VIS is_volatile : _BoolConstant<__is_volatile(_Tp)> { };
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_volatile_v = __is_volatile(_Tp);
|
|
|
|
|
inline constexpr bool is_volatile_v = __is_volatile(_Tp);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else
|
|
|
|
@ -649,8 +647,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_volatile<_Tp volatile> : pub
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_volatile_v
|
|
|
|
|
= is_volatile<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_volatile_v = is_volatile<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // __has_keyword(__is_volatile)
|
|
|
|
@ -727,7 +724,7 @@ struct _LIBCPP_TEMPLATE_VIS is_void : _BoolConstant<__is_void(_Tp)> { };
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_void_v = __is_void(_Tp);
|
|
|
|
|
inline constexpr bool is_void_v = __is_void(_Tp);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else
|
|
|
|
@ -737,8 +734,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_void
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_void_v
|
|
|
|
|
= is_void<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_void_v = is_void<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // __has_keyword(__is_void)
|
|
|
|
@ -757,8 +753,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_null_pointer
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_null_pointer_v
|
|
|
|
|
= is_null_pointer<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_null_pointer_v = is_null_pointer<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
#endif // _LIBCPP_STD_VER > 11
|
|
|
|
|
|
|
|
|
@ -771,7 +766,7 @@ struct _LIBCPP_TEMPLATE_VIS is_integral : _BoolConstant<__is_integral(_Tp)> { };
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_integral_v = __is_integral(_Tp);
|
|
|
|
|
inline constexpr bool is_integral_v = __is_integral(_Tp);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else
|
|
|
|
@ -781,8 +776,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_integral
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_integral_v
|
|
|
|
|
= is_integral<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_integral_v = is_integral<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // __has_keyword(__is_integral)
|
|
|
|
@ -825,8 +819,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_floating_point
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_floating_point_v
|
|
|
|
|
= is_floating_point<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_floating_point_v = is_floating_point<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_array
|
|
|
|
@ -838,7 +831,7 @@ struct _LIBCPP_TEMPLATE_VIS is_array : _BoolConstant<__is_array(_Tp)> { };
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_array_v = __is_array(_Tp);
|
|
|
|
|
inline constexpr bool is_array_v = __is_array(_Tp);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else
|
|
|
|
@ -852,8 +845,7 @@ template <class _Tp, size_t _Np> struct _LIBCPP_TEMPLATE_VIS is_array<_Tp[_Np]>
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_array_v
|
|
|
|
|
= is_array<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_array_v = is_array<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // __has_keyword(__is_array)
|
|
|
|
@ -870,7 +862,7 @@ struct _LIBCPP_TEMPLATE_VIS is_pointer : _BoolConstant<__is_pointer(_Tp)> { };
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_pointer_v = __is_pointer(_Tp);
|
|
|
|
|
inline constexpr bool is_pointer_v = __is_pointer(_Tp);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else // __has_keyword(__is_pointer)
|
|
|
|
@ -891,8 +883,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_pointer
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_pointer_v
|
|
|
|
|
= is_pointer<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_pointer_v = is_pointer<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // __has_keyword(__is_pointer)
|
|
|
|
@ -914,13 +905,11 @@ struct _LIBCPP_TEMPLATE_VIS is_reference : _BoolConstant<__is_reference(_Tp)> {
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_reference_v = __is_reference(_Tp);
|
|
|
|
|
|
|
|
|
|
inline constexpr bool is_reference_v = __is_reference(_Tp);
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_lvalue_reference_v = __is_lvalue_reference(_Tp);
|
|
|
|
|
|
|
|
|
|
inline constexpr bool is_lvalue_reference_v = __is_lvalue_reference(_Tp);
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_rvalue_reference_v = __is_rvalue_reference(_Tp);
|
|
|
|
|
inline constexpr bool is_rvalue_reference_v = __is_rvalue_reference(_Tp);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else // __has_keyword(__is_lvalue_reference) && etc...
|
|
|
|
@ -937,16 +926,13 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_reference<_Tp&&> : public tr
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_reference_v
|
|
|
|
|
= is_reference<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_reference_v = is_reference<_Tp>::value;
|
|
|
|
|
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_lvalue_reference_v
|
|
|
|
|
= is_lvalue_reference<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_lvalue_reference_v = is_lvalue_reference<_Tp>::value;
|
|
|
|
|
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_rvalue_reference_v
|
|
|
|
|
= is_rvalue_reference<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_rvalue_reference_v = is_rvalue_reference<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // __has_keyword(__is_lvalue_reference) && etc...
|
|
|
|
@ -968,8 +954,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_union
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_union_v
|
|
|
|
|
= is_union<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_union_v = is_union<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_class
|
|
|
|
@ -994,8 +979,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_class
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_class_v
|
|
|
|
|
= is_class<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_class_v = is_class<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_function
|
|
|
|
@ -1012,8 +996,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_function
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_function_v
|
|
|
|
|
= is_function<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_function_v = is_function<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
template <class _Tp> struct __libcpp_is_member_pointer {
|
|
|
|
@ -1039,8 +1022,7 @@ struct _LIBCPP_TEMPLATE_VIS is_member_function_pointer
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_member_function_pointer_v
|
|
|
|
|
= __is_member_function_pointer(_Tp);
|
|
|
|
|
inline constexpr bool is_member_function_pointer_v = __is_member_function_pointer(_Tp);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else // __has_keyword(__is_member_function_pointer)
|
|
|
|
@ -1050,8 +1032,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_member_function_pointer
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_member_function_pointer_v
|
|
|
|
|
= is_member_function_pointer<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_member_function_pointer_v = is_member_function_pointer<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // __has_keyword(__is_member_function_pointer)
|
|
|
|
@ -1065,7 +1046,7 @@ struct _LIBCPP_TEMPLATE_VIS is_member_pointer : _BoolConstant<__is_member_pointe
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_member_pointer_v = __is_member_pointer(_Tp);
|
|
|
|
|
inline constexpr bool is_member_pointer_v = __is_member_pointer(_Tp);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else // __has_keyword(__is_member_pointer)
|
|
|
|
@ -1075,8 +1056,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_member_pointer
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_member_pointer_v
|
|
|
|
|
= is_member_pointer<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_member_pointer_v = is_member_pointer<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // __has_keyword(__is_member_pointer)
|
|
|
|
@ -1091,8 +1071,7 @@ struct _LIBCPP_TEMPLATE_VIS is_member_object_pointer
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_member_object_pointer_v
|
|
|
|
|
= __is_member_object_pointer(_Tp);
|
|
|
|
|
inline constexpr bool is_member_object_pointer_v = __is_member_object_pointer(_Tp);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else // __has_keyword(__is_member_object_pointer)
|
|
|
|
@ -1102,8 +1081,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_member_object_pointer
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_member_object_pointer_v
|
|
|
|
|
= is_member_object_pointer<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_member_object_pointer_v = is_member_object_pointer<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // __has_keyword(__is_member_object_pointer)
|
|
|
|
@ -1117,7 +1095,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_enum
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_enum_v = __is_enum(_Tp);
|
|
|
|
|
inline constexpr bool is_enum_v = __is_enum(_Tp);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else
|
|
|
|
@ -1136,8 +1114,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_enum
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_enum_v
|
|
|
|
|
= is_enum<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_enum_v = is_enum<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // __has_feature(is_enum) || defined(_LIBCPP_COMPILER_GCC)
|
|
|
|
@ -1151,8 +1128,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_arithmetic
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_arithmetic_v
|
|
|
|
|
= is_arithmetic<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_arithmetic_v = is_arithmetic<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_fundamental
|
|
|
|
@ -1168,7 +1144,7 @@ struct _LIBCPP_TEMPLATE_VIS is_fundamental : _BoolConstant<__is_fundamental(_Tp)
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_fundamental_v = __is_fundamental(_Tp);
|
|
|
|
|
inline constexpr bool is_fundamental_v = __is_fundamental(_Tp);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else // __has_keyword(__is_fundamental)
|
|
|
|
@ -1180,8 +1156,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_fundamental
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_fundamental_v
|
|
|
|
|
= is_fundamental<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_fundamental_v = is_fundamental<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // __has_keyword(__is_fundamental)
|
|
|
|
@ -1196,7 +1171,7 @@ struct _LIBCPP_TEMPLATE_VIS is_scalar : _BoolConstant<__is_scalar(_Tp)> { };
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_scalar_v = __is_scalar(_Tp);
|
|
|
|
|
inline constexpr bool is_scalar_v = __is_scalar(_Tp);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else // __has_keyword(__is_scalar)
|
|
|
|
@ -1218,8 +1193,7 @@ template <> struct _LIBCPP_TEMPLATE_VIS is_scalar<nullptr_t> : public true_type
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_scalar_v
|
|
|
|
|
= is_scalar<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_scalar_v = is_scalar<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // __has_keyword(__is_scalar)
|
|
|
|
@ -1233,7 +1207,7 @@ struct _LIBCPP_TEMPLATE_VIS is_object : _BoolConstant<__is_object(_Tp)> { };
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_object_v = __is_object(_Tp);
|
|
|
|
|
inline constexpr bool is_object_v = __is_object(_Tp);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else // __has_keyword(__is_object)
|
|
|
|
@ -1246,8 +1220,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_object
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_object_v
|
|
|
|
|
= is_object<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_object_v = is_object<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // __has_keyword(__is_object)
|
|
|
|
@ -1262,7 +1235,7 @@ struct _LIBCPP_TEMPLATE_VIS is_compound : _BoolConstant<__is_compound(_Tp)> { };
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_compound_v = __is_compound(_Tp);
|
|
|
|
|
inline constexpr bool is_compound_v = __is_compound(_Tp);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else // __has_keyword(__is_compound)
|
|
|
|
@ -1272,8 +1245,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_compound
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_compound_v
|
|
|
|
|
= is_compound<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_compound_v = is_compound<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // __has_keyword(__is_compound)
|
|
|
|
@ -1454,7 +1426,7 @@ struct _LIBCPP_TEMPLATE_VIS is_signed : _BoolConstant<__is_signed(_Tp)> { };
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_signed_v = __is_signed(_Tp);
|
|
|
|
|
inline constexpr bool is_signed_v = __is_signed(_Tp);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else // __has_keyword(__is_signed)
|
|
|
|
@ -1474,8 +1446,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_signed : public __libcpp_is_
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_signed_v
|
|
|
|
|
= is_signed<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_signed_v = is_signed<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // __has_keyword(__is_signed)
|
|
|
|
@ -1493,7 +1464,7 @@ struct _LIBCPP_TEMPLATE_VIS is_unsigned : _BoolConstant<__is_unsigned(_Tp)> { };
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_unsigned_v = __is_unsigned(_Tp);
|
|
|
|
|
inline constexpr bool is_unsigned_v = __is_unsigned(_Tp);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else // __has_keyword(__is_unsigned)
|
|
|
|
@ -1513,8 +1484,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_unsigned : public __libcpp_i
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_unsigned_v
|
|
|
|
|
= is_unsigned<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_unsigned_v = is_unsigned<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // __has_keyword(__is_unsigned)
|
|
|
|
@ -1530,8 +1500,7 @@ template <class _Tp, size_t _Np> struct _LIBCPP_TEMPLATE_VIS rank<_Tp[_Np]>
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR size_t rank_v
|
|
|
|
|
= rank<_Tp>::value;
|
|
|
|
|
inline constexpr size_t rank_v = rank<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// extent
|
|
|
|
@ -1544,7 +1513,7 @@ struct _LIBCPP_TEMPLATE_VIS extent
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp, unsigned _Ip = 0>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR size_t extent_v = __array_extent(_Tp, _Ip);
|
|
|
|
|
inline constexpr size_t extent_v = __array_extent(_Tp, _Ip);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else // __has_keyword(__array_extent)
|
|
|
|
@ -1562,8 +1531,7 @@ template <class _Tp, size_t _Np, unsigned _Ip> struct _LIBCPP_TEMPLATE_VIS exten
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp, unsigned _Ip = 0>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR size_t extent_v
|
|
|
|
|
= extent<_Tp, _Ip>::value;
|
|
|
|
|
inline constexpr size_t extent_v = extent<_Tp, _Ip>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // __has_keyword(__array_extent)
|
|
|
|
@ -1601,7 +1569,7 @@ template <class> struct _LIBCPP_TEMPLATE_VIS is_bounded_array
|
|
|
|
|
template <class _Tp, size_t _Np> struct _LIBCPP_TEMPLATE_VIS is_bounded_array<_Tp[_Np]> : true_type {};
|
|
|
|
|
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR
|
|
|
|
|
inline constexpr
|
|
|
|
|
bool is_bounded_array_v = is_bounded_array<_Tp>::value;
|
|
|
|
|
|
|
|
|
|
// is_unbounded_array
|
|
|
|
@ -1610,7 +1578,7 @@ template <class> struct _LIBCPP_TEMPLATE_VIS is_unbounded_array : fal
|
|
|
|
|
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_unbounded_array<_Tp[]> : true_type {};
|
|
|
|
|
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR
|
|
|
|
|
inline constexpr
|
|
|
|
|
bool is_unbounded_array_v = is_unbounded_array<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
@ -1657,8 +1625,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_abstract
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_abstract_v
|
|
|
|
|
= is_abstract<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_abstract_v = is_abstract<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_final
|
|
|
|
@ -1673,8 +1640,7 @@ is_final : public integral_constant<bool, __is_final(_Tp)> {};
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_final_v
|
|
|
|
|
= is_final<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_final_v = is_final<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_aggregate
|
|
|
|
@ -1685,8 +1651,7 @@ is_aggregate : public integral_constant<bool, __is_aggregate(_Tp)> {};
|
|
|
|
|
|
|
|
|
|
#if !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR constexpr bool is_aggregate_v
|
|
|
|
|
= is_aggregate<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_aggregate_v = is_aggregate<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // _LIBCPP_STD_VER > 14
|
|
|
|
@ -1699,8 +1664,7 @@ struct _LIBCPP_TEMPLATE_VIS is_base_of
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Bp, class _Dp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_base_of_v
|
|
|
|
|
= is_base_of<_Bp, _Dp>::value;
|
|
|
|
|
inline constexpr bool is_base_of_v = is_base_of<_Bp, _Dp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// __is_core_convertible
|
|
|
|
@ -1796,8 +1760,7 @@ template <class _T1, class _T2> struct _LIBCPP_TEMPLATE_VIS is_convertible
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _From, class _To>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_convertible_v
|
|
|
|
|
= is_convertible<_From, _To>::value;
|
|
|
|
|
inline constexpr bool is_convertible_v = is_convertible<_From, _To>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_nothrow_convertible
|
|
|
|
@ -1859,8 +1822,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_empty : public __libcpp_empt
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_empty_v
|
|
|
|
|
= is_empty<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_empty_v = is_empty<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_polymorphic
|
|
|
|
@ -1885,8 +1847,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_polymorphic
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_polymorphic_v
|
|
|
|
|
= is_polymorphic<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_polymorphic_v = is_polymorphic<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// has_virtual_destructor
|
|
|
|
@ -1905,8 +1866,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS has_virtual_destructor
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool has_virtual_destructor_v
|
|
|
|
|
= has_virtual_destructor<_Tp>::value;
|
|
|
|
|
inline constexpr bool has_virtual_destructor_v = has_virtual_destructor<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// has_unique_object_representations
|
|
|
|
@ -1919,8 +1879,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS has_unique_object_representatio
|
|
|
|
|
|
|
|
|
|
#if !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool has_unique_object_representations_v
|
|
|
|
|
= has_unique_object_representations<_Tp>::value;
|
|
|
|
|
inline constexpr bool has_unique_object_representations_v = has_unique_object_representations<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
@ -1932,8 +1891,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS alignment_of
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR size_t alignment_of_v
|
|
|
|
|
= alignment_of<_Tp>::value;
|
|
|
|
|
inline constexpr size_t alignment_of_v = alignment_of<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// aligned_storage
|
|
|
|
@ -2678,7 +2636,7 @@ struct _LIBCPP_TEMPLATE_VIS is_assignable : _BoolConstant<__is_assignable(_Tp, _
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp, class _Arg>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_assignable_v = __is_assignable(_Tp, _Arg);
|
|
|
|
|
inline constexpr bool is_assignable_v = __is_assignable(_Tp, _Arg);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else // __has_keyword(__is_assignable)
|
|
|
|
@ -2707,8 +2665,7 @@ struct is_assignable
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp, class _Arg>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_assignable_v
|
|
|
|
|
= is_assignable<_Tp, _Arg>::value;
|
|
|
|
|
inline constexpr bool is_assignable_v = is_assignable<_Tp, _Arg>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // __has_keyword(__is_assignable)
|
|
|
|
@ -2721,8 +2678,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_copy_assignable
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_copy_assignable_v
|
|
|
|
|
= is_copy_assignable<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_copy_assignable_v = is_copy_assignable<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_move_assignable
|
|
|
|
@ -2733,8 +2689,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_move_assignable
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_move_assignable_v
|
|
|
|
|
= is_move_assignable<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_move_assignable_v = is_move_assignable<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_destructible
|
|
|
|
@ -2746,7 +2701,7 @@ struct _LIBCPP_TEMPLATE_VIS is_destructible : _BoolConstant<__is_destructible(_T
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_destructible_v = __is_destructible(_Tp);
|
|
|
|
|
inline constexpr bool is_destructible_v = __is_destructible(_Tp);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else // __has_keyword(__is_destructible)
|
|
|
|
@ -2809,8 +2764,7 @@ struct is_destructible<void>
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_destructible_v
|
|
|
|
|
= is_destructible<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_destructible_v = is_destructible<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // __has_keyword(__is_destructible)
|
|
|
|
@ -3053,8 +3007,7 @@ struct _LIBCPP_TEMPLATE_VIS is_constructible
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp, class ..._Args>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_constructible_v
|
|
|
|
|
= is_constructible<_Tp, _Args...>::value;
|
|
|
|
|
inline constexpr bool is_constructible_v = is_constructible<_Tp, _Args...>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_default_constructible
|
|
|
|
@ -3066,8 +3019,7 @@ struct _LIBCPP_TEMPLATE_VIS is_default_constructible
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_default_constructible_v
|
|
|
|
|
= is_default_constructible<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_default_constructible_v = is_default_constructible<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifndef _LIBCPP_CXX03_LANG
|
|
|
|
@ -3103,8 +3055,7 @@ struct _LIBCPP_TEMPLATE_VIS is_copy_constructible
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_copy_constructible_v
|
|
|
|
|
= is_copy_constructible<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_copy_constructible_v = is_copy_constructible<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_move_constructible
|
|
|
|
@ -3116,8 +3067,7 @@ struct _LIBCPP_TEMPLATE_VIS is_move_constructible
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_move_constructible_v
|
|
|
|
|
= is_move_constructible<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_move_constructible_v = is_move_constructible<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_trivially_constructible
|
|
|
|
@ -3130,8 +3080,7 @@ struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp, class... _Args>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_trivially_constructible_v
|
|
|
|
|
= is_trivially_constructible<_Tp, _Args...>::value;
|
|
|
|
|
inline constexpr bool is_trivially_constructible_v = is_trivially_constructible<_Tp, _Args...>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_trivially_default_constructible
|
|
|
|
@ -3142,8 +3091,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_default_constructi
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_trivially_default_constructible_v
|
|
|
|
|
= is_trivially_default_constructible<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_trivially_default_constructible_v = is_trivially_default_constructible<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_trivially_copy_constructible
|
|
|
|
@ -3154,8 +3102,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_copy_constructible
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_trivially_copy_constructible_v
|
|
|
|
|
= is_trivially_copy_constructible<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_trivially_copy_constructible_v = is_trivially_copy_constructible<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_trivially_move_constructible
|
|
|
|
@ -3166,8 +3113,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_move_constructible
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_trivially_move_constructible_v
|
|
|
|
|
= is_trivially_move_constructible<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_trivially_move_constructible_v = is_trivially_move_constructible<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_trivially_assignable
|
|
|
|
@ -3179,8 +3125,7 @@ struct is_trivially_assignable
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp, class _Arg>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_trivially_assignable_v
|
|
|
|
|
= is_trivially_assignable<_Tp, _Arg>::value;
|
|
|
|
|
inline constexpr bool is_trivially_assignable_v = is_trivially_assignable<_Tp, _Arg>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_trivially_copy_assignable
|
|
|
|
@ -3191,8 +3136,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_copy_assignable
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_trivially_copy_assignable_v
|
|
|
|
|
= is_trivially_copy_assignable<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_trivially_copy_assignable_v = is_trivially_copy_assignable<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_trivially_move_assignable
|
|
|
|
@ -3204,8 +3148,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_move_assignable
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_trivially_move_assignable_v
|
|
|
|
|
= is_trivially_move_assignable<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_trivially_move_assignable_v = is_trivially_move_assignable<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_trivially_destructible
|
|
|
|
@ -3236,8 +3179,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_destructible<_Tp[]
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_trivially_destructible_v
|
|
|
|
|
= is_trivially_destructible<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_trivially_destructible_v = is_trivially_destructible<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_nothrow_constructible
|
|
|
|
@ -3290,8 +3232,7 @@ struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible<_Tp[_Ns]>
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp, class ..._Args>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_nothrow_constructible_v
|
|
|
|
|
= is_nothrow_constructible<_Tp, _Args...>::value;
|
|
|
|
|
inline constexpr bool is_nothrow_constructible_v = is_nothrow_constructible<_Tp, _Args...>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_nothrow_default_constructible
|
|
|
|
@ -3302,8 +3243,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_nothrow_default_constructibl
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_nothrow_default_constructible_v
|
|
|
|
|
= is_nothrow_default_constructible<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_nothrow_default_constructible_v = is_nothrow_default_constructible<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_nothrow_copy_constructible
|
|
|
|
@ -3314,8 +3254,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_nothrow_copy_constructible
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_nothrow_copy_constructible_v
|
|
|
|
|
= is_nothrow_copy_constructible<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_nothrow_copy_constructible_v = is_nothrow_copy_constructible<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_nothrow_move_constructible
|
|
|
|
@ -3326,8 +3265,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_nothrow_move_constructible
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_nothrow_move_constructible_v
|
|
|
|
|
= is_nothrow_move_constructible<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_nothrow_move_constructible_v = is_nothrow_move_constructible<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_nothrow_assignable
|
|
|
|
@ -3364,8 +3302,7 @@ struct _LIBCPP_TEMPLATE_VIS is_nothrow_assignable
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp, class _Arg>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_nothrow_assignable_v
|
|
|
|
|
= is_nothrow_assignable<_Tp, _Arg>::value;
|
|
|
|
|
inline constexpr bool is_nothrow_assignable_v = is_nothrow_assignable<_Tp, _Arg>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_nothrow_copy_assignable
|
|
|
|
@ -3376,8 +3313,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_nothrow_copy_assignable
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_nothrow_copy_assignable_v
|
|
|
|
|
= is_nothrow_copy_assignable<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_nothrow_copy_assignable_v = is_nothrow_copy_assignable<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_nothrow_move_assignable
|
|
|
|
@ -3389,8 +3325,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_nothrow_move_assignable
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_nothrow_move_assignable_v
|
|
|
|
|
= is_nothrow_move_assignable<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_nothrow_move_assignable_v = is_nothrow_move_assignable<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_nothrow_destructible
|
|
|
|
@ -3452,8 +3387,7 @@ struct _LIBCPP_TEMPLATE_VIS is_nothrow_destructible<_Tp[]>
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_nothrow_destructible_v
|
|
|
|
|
= is_nothrow_destructible<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_nothrow_destructible_v = is_nothrow_destructible<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_pod
|
|
|
|
@ -3475,8 +3409,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_pod
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_pod_v
|
|
|
|
|
= is_pod<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_pod_v = is_pod<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_literal_type;
|
|
|
|
@ -3488,8 +3421,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 is_
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_literal_type_v
|
|
|
|
|
= is_literal_type<_Tp>::value;
|
|
|
|
|
_LIBCPP_DEPRECATED_IN_CXX17 inline constexpr bool is_literal_type_v = is_literal_type<_Tp>::value;
|
|
|
|
|
#endif // _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
#endif // _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_TYPE_TRAITS)
|
|
|
|
|
|
|
|
|
@ -3505,8 +3437,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_standard_layout
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_standard_layout_v
|
|
|
|
|
= is_standard_layout<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_standard_layout_v = is_standard_layout<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_trivially_copyable;
|
|
|
|
@ -3517,8 +3448,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_copyable
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_trivially_copyable_v
|
|
|
|
|
= is_trivially_copyable<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_trivially_copyable_v = is_trivially_copyable<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// is_trivial;
|
|
|
|
@ -3534,8 +3464,7 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivial
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES)
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_trivial_v
|
|
|
|
|
= is_trivial<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_trivial_v = is_trivial<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
template <class _Tp> struct __is_reference_wrapper_impl : public false_type {};
|
|
|
|
@ -3942,12 +3871,10 @@ struct _LIBCPP_TEMPLATE_VIS is_invocable_r
|
|
|
|
|
: integral_constant<bool, __invokable_r<_Ret, _Fn, _Args...>::value> {};
|
|
|
|
|
|
|
|
|
|
template <class _Fn, class ..._Args>
|
|
|
|
|
_LIBCPP_INLINE_VAR constexpr bool is_invocable_v
|
|
|
|
|
= is_invocable<_Fn, _Args...>::value;
|
|
|
|
|
inline constexpr bool is_invocable_v = is_invocable<_Fn, _Args...>::value;
|
|
|
|
|
|
|
|
|
|
template <class _Ret, class _Fn, class ..._Args>
|
|
|
|
|
_LIBCPP_INLINE_VAR constexpr bool is_invocable_r_v
|
|
|
|
|
= is_invocable_r<_Ret, _Fn, _Args...>::value;
|
|
|
|
|
inline constexpr bool is_invocable_r_v = is_invocable_r<_Ret, _Fn, _Args...>::value;
|
|
|
|
|
|
|
|
|
|
// is_nothrow_invocable
|
|
|
|
|
|
|
|
|
@ -3960,12 +3887,10 @@ struct _LIBCPP_TEMPLATE_VIS is_nothrow_invocable_r
|
|
|
|
|
: integral_constant<bool, __nothrow_invokable_r<_Ret, _Fn, _Args...>::value> {};
|
|
|
|
|
|
|
|
|
|
template <class _Fn, class ..._Args>
|
|
|
|
|
_LIBCPP_INLINE_VAR constexpr bool is_nothrow_invocable_v
|
|
|
|
|
= is_nothrow_invocable<_Fn, _Args...>::value;
|
|
|
|
|
inline constexpr bool is_nothrow_invocable_v = is_nothrow_invocable<_Fn, _Args...>::value;
|
|
|
|
|
|
|
|
|
|
template <class _Ret, class _Fn, class ..._Args>
|
|
|
|
|
_LIBCPP_INLINE_VAR constexpr bool is_nothrow_invocable_r_v
|
|
|
|
|
= is_nothrow_invocable_r<_Ret, _Fn, _Args...>::value;
|
|
|
|
|
inline constexpr bool is_nothrow_invocable_r_v = is_nothrow_invocable_r<_Ret, _Fn, _Args...>::value;
|
|
|
|
|
|
|
|
|
|
#endif // _LIBCPP_STD_VER > 14
|
|
|
|
|
|
|
|
|
@ -4088,20 +4013,16 @@ struct _LIBCPP_TEMPLATE_VIS is_nothrow_swappable
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
template <class _Tp, class _Up>
|
|
|
|
|
_LIBCPP_INLINE_VAR constexpr bool is_swappable_with_v
|
|
|
|
|
= is_swappable_with<_Tp, _Up>::value;
|
|
|
|
|
inline constexpr bool is_swappable_with_v = is_swappable_with<_Tp, _Up>::value;
|
|
|
|
|
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR constexpr bool is_swappable_v
|
|
|
|
|
= is_swappable<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_swappable_v = is_swappable<_Tp>::value;
|
|
|
|
|
|
|
|
|
|
template <class _Tp, class _Up>
|
|
|
|
|
_LIBCPP_INLINE_VAR constexpr bool is_nothrow_swappable_with_v
|
|
|
|
|
= is_nothrow_swappable_with<_Tp, _Up>::value;
|
|
|
|
|
inline constexpr bool is_nothrow_swappable_with_v = is_nothrow_swappable_with<_Tp, _Up>::value;
|
|
|
|
|
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR constexpr bool is_nothrow_swappable_v
|
|
|
|
|
= is_nothrow_swappable<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_nothrow_swappable_v = is_nothrow_swappable<_Tp>::value;
|
|
|
|
|
|
|
|
|
|
#endif // _LIBCPP_STD_VER > 14
|
|
|
|
|
|
|
|
|
@ -4184,8 +4105,7 @@ struct _LIBCPP_TEMPLATE_VIS is_scoped_enum
|
|
|
|
|
: public __is_scoped_enum_helper<_Tp> {};
|
|
|
|
|
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_scoped_enum_v =
|
|
|
|
|
is_scoped_enum<_Tp>::value;
|
|
|
|
|
inline constexpr bool is_scoped_enum_v = is_scoped_enum<_Tp>::value;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if _LIBCPP_STD_VER > 14
|
|
|
|
@ -4193,20 +4113,17 @@ _LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_scoped_enum_v =
|
|
|
|
|
template <class... _Args>
|
|
|
|
|
struct conjunction : _And<_Args...> {};
|
|
|
|
|
template<class... _Args>
|
|
|
|
|
_LIBCPP_INLINE_VAR constexpr bool conjunction_v
|
|
|
|
|
= conjunction<_Args...>::value;
|
|
|
|
|
inline constexpr bool conjunction_v = conjunction<_Args...>::value;
|
|
|
|
|
|
|
|
|
|
template <class... _Args>
|
|
|
|
|
struct disjunction : _Or<_Args...> {};
|
|
|
|
|
template<class... _Args>
|
|
|
|
|
_LIBCPP_INLINE_VAR constexpr bool disjunction_v
|
|
|
|
|
= disjunction<_Args...>::value;
|
|
|
|
|
inline constexpr bool disjunction_v = disjunction<_Args...>::value;
|
|
|
|
|
|
|
|
|
|
template <class _Tp>
|
|
|
|
|
struct negation : _Not<_Tp> {};
|
|
|
|
|
template<class _Tp>
|
|
|
|
|
_LIBCPP_INLINE_VAR constexpr bool negation_v
|
|
|
|
|
= negation<_Tp>::value;
|
|
|
|
|
inline constexpr bool negation_v = negation<_Tp>::value;
|
|
|
|
|
#endif // _LIBCPP_STD_VER > 14
|
|
|
|
|
|
|
|
|
|
// These traits are used in __tree and __hash_table
|
|
|
|
|