STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Classes | Macros | Typedefs | Functions
type_traits File Reference
#include <xstddef>

Classes

struct  _Is_memfunptr< _Ty >
 
struct  is_void< _Ty >
 
struct  add_const< _Ty >
 
struct  add_volatile< _Ty >
 
struct  add_cv< _Ty >
 
struct  _Add_reference< _Ty, bool >
 
struct  _Add_reference< _Ty, false >
 
struct  add_lvalue_reference< _Ty >
 
struct  add_rvalue_reference< _Ty >
 
struct  remove_extent< _Ty >
 
struct  remove_extent< _Ty[_Ix]>
 
struct  remove_extent< _Ty[]>
 
struct  remove_all_extents< _Ty >
 
struct  remove_all_extents< _Ty[_Ix]>
 
struct  remove_all_extents< _Ty[]>
 
struct  remove_pointer< _Ty >
 
struct  _Add_pointer< _Ty, bool >
 
struct  _Add_pointer< _Ty, false >
 
struct  add_pointer< _Ty >
 
struct  is_array< _Ty >
 
struct  is_array< _Ty[_Nx]>
 
struct  is_array< _Ty[]>
 
struct  is_lvalue_reference< _Ty >
 
struct  is_lvalue_reference< _Ty & >
 
struct  is_rvalue_reference< _Ty >
 
struct  is_rvalue_reference< _Ty && >
 
struct  is_reference< _Ty >
 
struct  _Is_member_object_pointer< _Ty, _Pmf >
 
struct  _Is_member_object_pointer< _Ty1 _Ty2::*, false >
 
struct  is_member_object_pointer< _Ty >
 
struct  is_member_function_pointer< _Ty >
 
struct  _Is_pointer< _Ty >
 
struct  _Is_pointer< _Ty * >
 
struct  is_pointer< _Ty >
 
struct  is_null_pointer< _Ty >
 
struct  is_union< _Ty >
 
struct  is_class< _Ty >
 
struct  is_fundamental< _Ty >
 
struct  is_object< _Ty >
 
struct  is_convertible< _From, _To >
 
struct  is_enum< _Ty >
 
struct  is_compound< _Ty >
 
struct  is_member_pointer< _Ty >
 
struct  is_scalar< _Ty >
 
struct  is_const< _Ty >
 
struct  is_const< const _Ty >
 
struct  is_volatile< _Ty >
 
struct  is_volatile< volatile _Ty >
 
struct  is_pod< _Ty >
 
struct  is_empty< _Ty >
 
struct  is_polymorphic< _Ty >
 
struct  is_abstract< _Ty >
 
struct  is_final< _Ty >
 
struct  is_standard_layout< _Ty >
 
struct  is_literal_type< _Ty >
 
struct  is_trivial< _Ty >
 
struct  is_trivially_copyable< _Ty >
 
struct  has_virtual_destructor< _Ty >
 
struct  is_constructible< _Ty, _Args >
 
struct  is_copy_constructible< _Ty >
 
struct  is_default_constructible< _Ty >
 
struct  is_move_constructible< _Ty >
 
struct  is_assignable< _To, _From >
 
struct  is_copy_assignable< _Ty >
 
struct  is_move_assignable< _Ty >
 
struct  is_destructible< _Ty >
 
struct  is_trivially_constructible< _Ty, _Args >
 
struct  is_trivially_copy_constructible< _Ty >
 
struct  is_trivially_default_constructible< _Ty >
 
struct  is_trivially_move_constructible< _Ty >
 
struct  is_trivially_assignable< _To, _From >
 
struct  is_trivially_copy_assignable< _Ty >
 
struct  is_trivially_move_assignable< _Ty >
 
struct  is_trivially_destructible< _Ty >
 
struct  is_nothrow_constructible< _Ty, _Args >
 
struct  is_nothrow_copy_constructible< _Ty >
 
struct  is_nothrow_default_constructible< _Ty >
 
struct  is_nothrow_move_constructible< _Ty >
 
struct  is_nothrow_assignable< _To, _From >
 
struct  is_nothrow_copy_assignable< _Ty >
 
struct  is_nothrow_move_assignable< _Ty >
 
struct  is_nothrow_destructible< _Ty >
 
struct  _Sign_base< _Ty, bool >
 
struct  _Sign_base< _Ty, false >
 
struct  is_signed< _Ty >
 
struct  is_unsigned< _Ty >
 
struct  _Change_sign< _Ty >
 
struct  _Change_sign< const _Ty >
 
struct  _Change_sign< volatile _Ty >
 
struct  _Change_sign< const volatile _Ty >
 
struct  make_signed< _Ty >
 
struct  make_unsigned< _Ty >
 
struct  alignment_of< _Ty >
 
union  _Align_type< _Ty, _Len >
 
struct  _Aligned< _Len, _Align, _Ty, _Ok >
 
struct  _Aligned< _Len, _Align, _Ty, true >
 
struct  _Aligned< _Len, _Align, double, false >
 
struct  _Aligned< _Len, _Align, int, false >
 
struct  _Aligned< _Len, _Align, short, false >
 
struct  _Aligned< _Len, _Align, char, false >
 
struct  aligned_storage< _Len, _Align >
 
struct  _Maximum< _Vals >
 
struct  _Maximum<>
 
struct  _Maximum< _Val >
 
struct  _Maximum< _First, _Second, _Rest...>
 
struct  aligned_union< _Len, _Types >
 
struct  underlying_type< _Ty >
 
struct  rank< _Ty >
 
struct  rank< _Ty[_Ix]>
 
struct  rank< _Ty[]>
 
struct  _Extent< _Ty, _Nx >
 
struct  _Extent< _Ty[_Ix], 0 >
 
struct  _Extent< _Ty[_Ix], _Nx >
 
struct  _Extent< _Ty[], _Nx >
 
struct  extent< _Ty, _Nx >
 
struct  is_base_of< _Base, _Der >
 
struct  decay< _Ty >
 
struct  _Conjunction<>
 
struct  _Choose_conjunction< bool, _Lhs, _Traits >
 
struct  _Choose_conjunction< true, _Lhs, _Traits...>
 
struct  _Conjunction<>
 
struct  _Conjunction< _Trait >
 
struct  _Conjunction< _Lhs, _Traits...>
 
struct  conjunction< _Traits >
 
struct  _Disjunction<>
 
struct  _Choose_disjunction< bool, _Lhs, _Traits >
 
struct  _Choose_disjunction< false, _Lhs, _Traits...>
 
struct  _Disjunction<>
 
struct  _Disjunction< _Trait >
 
struct  _Disjunction< _Lhs, _Traits...>
 
struct  disjunction< _Traits >
 
struct  negation< _Trait >
 
struct  common_type< _Ty >
 
struct  common_type< _Ty >
 
struct  common_type< _Ty0, _Ty1 >
 
struct  common_type< _Ty0, _Ty1, _Ty...>
 
struct  integer_sequence< _Ty, _Vals >
 
struct  _Param_tester<>
 
struct  _Invoker_pmf_object
 
struct  _Invoker_pmf_pointer
 
struct  _Invoker_pmd_object
 
struct  _Invoker_pmd_pointer
 
struct  _Invoker_functor
 
struct  _Invoker1< _Callable, _Ty1, _Decayed, _Is_pmf, _Is_pmd >
 
struct  _Invoker1< _Callable, _Ty1, _Decayed, true, false >
 
struct  _Invoker1< _Callable, _Ty1, _Decayed, false, true >
 
struct  _Invoker1< _Callable, _Ty1, _Decayed, false, false >
 
struct  _Invoker< _Callable, _Types >
 
struct  _Invoker< _Callable >
 
struct  _Invoker< _Callable, _Ty1, _Types2...>
 
struct  _Forced< _Rx, bool >
 
struct  _Unforced
 
struct  _Unique_tag_result_of
 
struct  _Result_of< _Void, _Types >
 
struct  _Result_of< void_t< _Unique_tag_result_of, decltype(_STD invoke(_STD declval< _Types >()...))>, _Types...>
 
struct  result_of< _Fty >
 
struct  _Weak_result_type< _Ty, class >
 
struct  _Weak_result_type< _Ty, void_t< typename _Ty::result_type > >
 
struct  _Weak_argument_type< _Ty, class >
 
struct  _Weak_argument_type< _Ty, void_t< typename _Ty::argument_type > >
 
struct  _Weak_binary_args< _Ty, class >
 
struct  _Weak_binary_args< _Ty, void_t< typename _Ty::first_argument_type, typename _Ty::second_argument_type > >
 
struct  _Weak_types< _Ty >
 
class  reference_wrapper< _Ty >
 
struct  _Unrefwrap_helper< _Ty >
 
struct  _Unrefwrap_helper< reference_wrapper< _Ty > >
 
struct  _Unrefwrap< _Ty >
 
struct  _Is_swappable< _Ty >
 
struct  _Is_nothrow_swappable< _Ty >
 
struct  _Swappable_with_helper< _Ty, class >
 
struct  _Swappable_with_helper_unique_type
 
struct  _Swappable_with_helper< _Ty1, _Ty2, void_t< _Swappable_with_helper_unique_type, decltype(swap(_STD declval< _Ty1 >(), _STD declval< _Ty2 >()))> >
 
struct  _Is_swappable_with< _Ty1, _Ty2 >
 
struct  _Is_swappable< _Ty >
 
struct  _Swap_cannot_throw< _Ty1, _Ty2 >
 
struct  _Is_nothrow_swappable_with< _Ty1, _Ty2 >
 
struct  _Is_nothrow_swappable< _Ty >
 

Macros

#define _TYPE_TRAITS_
 
#define _IS_MEMFUNPTR(CALL_OPT, CV_OPT, REF_OPT)
 
#define _IS_MEMFUNPTR_ELLIPSIS(CV_REF_OPT, X1)
 
#define _IS_VOID(CV_OPT)
 
#define _REMOVE_POINTER(CV_OPT)
 
#define _FITS(_Ty)   _Align <= alignment_of<_Ty>::value
 
#define _NEXT_ALIGN(_Ty)   typedef typename _Aligned<_Len, _Align, _Ty, _FITS(_Ty)>::type type
 
#define _RESULT_OF(CALL_OPT, X1, X2)
 

Typedefs

template<class _Ty , _Ty _Size>
using make_integer_sequence = __make_integer_seq< integer_sequence, _Ty, _Size >
 
template<size_t... _Vals>
using index_sequence = integer_sequence< size_t, _Vals...>
 
template<size_t _Size>
using make_index_sequence = make_integer_sequence< size_t, _Size >
 
template<class... _Types>
using index_sequence_for = make_index_sequence< sizeof...(_Types)>
 
template<class... _Types>
using void_t = typename _Param_tester< _Types...>::type
 
template<class _Ty >
using remove_const_t = typename remove_const< _Ty >::type
 
template<class _Ty >
using remove_volatile_t = typename remove_volatile< _Ty >::type
 
template<class _Ty >
using remove_cv_t = typename remove_cv< _Ty >::type
 
template<class _Ty >
using add_const_t = typename add_const< _Ty >::type
 
template<class _Ty >
using add_volatile_t = typename add_volatile< _Ty >::type
 
template<class _Ty >
using add_cv_t = typename add_cv< _Ty >::type
 
template<class _Ty >
using remove_reference_t = typename remove_reference< _Ty >::type
 
template<class _Ty >
using add_lvalue_reference_t = typename add_lvalue_reference< _Ty >::type
 
template<class _Ty >
using add_rvalue_reference_t = typename add_rvalue_reference< _Ty >::type
 
template<class _Ty >
using make_signed_t = typename make_signed< _Ty >::type
 
template<class _Ty >
using make_unsigned_t = typename make_unsigned< _Ty >::type
 
template<class _Ty >
using remove_extent_t = typename remove_extent< _Ty >::type
 
template<class _Ty >
using remove_all_extents_t = typename remove_all_extents< _Ty >::type
 
template<class _Ty >
using remove_pointer_t = typename remove_pointer< _Ty >::type
 
template<class _Ty >
using add_pointer_t = typename add_pointer< _Ty >::type
 
template<size_t _Len, size_t _Align = alignment_of<max_align_t>::value>
using aligned_storage_t = typename aligned_storage< _Len, _Align >::type
 
template<size_t _Len, class... _Types>
using aligned_union_t = typename aligned_union< _Len, _Types...>::type
 
template<class _Ty >
using decay_t = typename decay< _Ty >::type
 
template<bool _Test, class _Ty = void>
using enable_if_t = typename enable_if< _Test, _Ty >::type
 
template<bool _Test, class _Ty1 , class _Ty2 >
using conditional_t = typename conditional< _Test, _Ty1, _Ty2 >::type
 
template<class... _Ty>
using common_type_t = typename common_type< _Ty...>::type
 
template<class _Ty >
using underlying_type_t = typename underlying_type< _Ty >::type
 
template<class _Ty >
using result_of_t = typename result_of< _Ty >::type
 

Functions

template<class _Ty >
add_rvalue_reference< _Ty >::type declval () _NOEXCEPT
 
template<class _Ty >
constexpr _Ty && forward (typename remove_reference< _Ty >::type &_Arg) _NOEXCEPT
 
template<class _Ty >
constexpr _Ty && forward (typename remove_reference< _Ty >::type &&_Arg) _NOEXCEPT
 
template<class _Ty >
constexpr remove_reference< _Ty >::type && move (_Ty &&_Arg) _NOEXCEPT
 
template<class _Ty >
constexpr _If<!is_nothrow_move_constructible< _Ty >::value &&is_copy_constructible< _Ty >::value, const _Ty &, _Ty && >::type move_if_noexcept (_Ty &_Arg) _NOEXCEPT
 
template<class _Callable , class... _Types>
auto invoke (_Callable &&_Obj, _Types &&..._Args) -> decltype(_Invoker< _Callable, _Types...>::_Call(_STD forward< _Callable >(_Obj), _STD forward< _Types >(_Args)...))
 
template<class _Cv_void , class... _Valtys>
void _Invoke_ret (_Forced< _Cv_void, true >, _Valtys &&..._Vals)
 
template<class _Rx , class... _Valtys>
_Rx _Invoke_ret (_Forced< _Rx, false >, _Valtys &&..._Vals)
 
template<class... _Valtys>
auto _Invoke_ret (_Forced< _Unforced, false >, _Valtys &&..._Vals) -> decltype(_STD invoke(_STD forward< _Valtys >(_Vals)...))
 
template<class _Ty >
reference_wrapper< _Ty > ref (_Ty &_Val) _NOEXCEPT
 
template<class _Ty >
void ref (const _Ty &&)=delete
 
template<class _Ty >
reference_wrapper< _Ty > ref (reference_wrapper< _Ty > _Val) _NOEXCEPT
 
template<class _Ty >
reference_wrapper< const _Ty > cref (const _Ty &_Val) _NOEXCEPT
 
template<class _Ty >
void cref (const _Ty &&)=delete
 
template<class _Ty >
reference_wrapper< const _Ty > cref (reference_wrapper< _Ty > _Val) _NOEXCEPT
 

Macro Definition Documentation

#define _FITS (   _Ty)    _Align <= alignment_of<_Ty>::value
#define _IS_MEMFUNPTR (   CALL_OPT,
  CV_OPT,
  REF_OPT 
)
Value:
template<class _Ret, \
class _Arg0, \
class... _Types> \
struct _Is_memfunptr<_Ret (CALL_OPT _Arg0::*)(_Types...) CV_OPT REF_OPT> \
: _Arg_types<CV_OPT _Arg0 *, _Types...> \
{ /* base class for member function pointer predicates */ \
typedef true_type _Bool_type; \
typedef _Ret result_type; \
typedef _Arg0 _Class_type; \
};
Definition: xtr1common:22
Definition: type_traits:16
Definition: xstddef:636
#define _IS_MEMFUNPTR_ELLIPSIS (   CV_REF_OPT,
  X1 
)
Value:
template<class _Ret, \
class _Arg0, \
class... _Types> \
struct _Is_memfunptr<_Ret (_Arg0::*)(_Types..., ...) CV_REF_OPT> \
{ /* no calling conventions for ellipsis */ \
typedef true_type _Bool_type; \
typedef _Ret result_type; \
typedef _Arg0 _Class_type; \
};
Definition: xtr1common:22
Definition: type_traits:16
#define _IS_VOID (   CV_OPT)
Value:
template<> \
{ /* determine whether _Ty is void */ \
};
Definition: xtr1common:22
Definition: type_traits:52
#define _NEXT_ALIGN (   _Ty)    typedef typename _Aligned<_Len, _Align, _Ty, _FITS(_Ty)>::type type
#define _REMOVE_POINTER (   CV_OPT)
Value:
template<class _Ty> \
{ /* remove pointer */ \
typedef _Ty type; \
};
Definition: type_traits:164
#define _RESULT_OF (   CALL_OPT,
  X1,
  X2 
)
Value:
template<class _Fty, \
class... _Args> \
struct result_of<_Fty CALL_OPT (_Args...)> \
: _Result_of<void, _Fty, _Args...> \
{ /* template to determine result of call operation */ \
};
Definition: type_traits:1485
Definition: type_traits:1500
_CRT_BEGIN_C_HEADER typedef void(__CRTDECL *unexpected_handler)()
#define _TYPE_TRAITS_

Typedef Documentation

template<class _Ty >
using add_const_t = typename add_const<_Ty>::type
template<class _Ty >
using add_cv_t = typename add_cv<_Ty>::type
template<class _Ty >
using add_lvalue_reference_t = typename add_lvalue_reference<_Ty>::type
template<class _Ty >
using add_pointer_t = typename add_pointer<_Ty>::type
template<class _Ty >
using add_rvalue_reference_t = typename add_rvalue_reference<_Ty>::type
template<class _Ty >
using add_volatile_t = typename add_volatile<_Ty>::type
template<size_t _Len, size_t _Align = alignment_of<max_align_t>::value>
using aligned_storage_t = typename aligned_storage<_Len, _Align>::type
template<size_t _Len, class... _Types>
using aligned_union_t = typename aligned_union<_Len, _Types...>::type
template<class... _Ty>
using common_type_t = typename common_type<_Ty...>::type
template<bool _Test, class _Ty1 , class _Ty2 >
using conditional_t = typename conditional<_Test, _Ty1, _Ty2>::type
template<class _Ty >
using decay_t = typename decay<_Ty>::type
template<bool _Test, class _Ty = void>
using enable_if_t = typename enable_if<_Test, _Ty>::type
template<size_t... _Vals>
using index_sequence = integer_sequence<size_t, _Vals...>
template<class... _Types>
using index_sequence_for = make_index_sequence<sizeof...(_Types)>
template<size_t _Size>
using make_index_sequence = make_integer_sequence<size_t, _Size>
template<class _Ty , _Ty _Size>
using make_integer_sequence = __make_integer_seq<integer_sequence, _Ty, _Size>
template<class _Ty >
using make_signed_t = typename make_signed<_Ty>::type
template<class _Ty >
using make_unsigned_t = typename make_unsigned<_Ty>::type
template<class _Ty >
using remove_all_extents_t = typename remove_all_extents<_Ty>::type
template<class _Ty >
using remove_const_t = typename remove_const<_Ty>::type
template<class _Ty >
using remove_cv_t = typename remove_cv<_Ty>::type
template<class _Ty >
using remove_extent_t = typename remove_extent<_Ty>::type
template<class _Ty >
using remove_pointer_t = typename remove_pointer<_Ty>::type
template<class _Ty >
using remove_reference_t = typename remove_reference<_Ty>::type
template<class _Ty >
using remove_volatile_t = typename remove_volatile<_Ty>::type
template<class _Ty >
using result_of_t = typename result_of<_Ty>::type
template<class _Ty >
using underlying_type_t = typename underlying_type<_Ty>::type
template<class... _Types>
using void_t = typename _Param_tester<_Types...>::type

Function Documentation

template<class _Cv_void , class... _Valtys>
void _Invoke_ret ( _Forced< _Cv_void, true ,
_Valtys &&...  _Vals 
)
inline
1460  { // INVOKE, "implicitly" converted to void
1461  _STD invoke(_STD forward<_Valtys>(_Vals)...);
1462  }
auto invoke(_Callable &&_Obj, _Types &&..._Args) -> decltype(_Invoker< _Callable, _Types...>::_Call(_STD forward< _Callable >(_Obj), _STD forward< _Types >(_Args)...))
Definition: type_traits:1439
template<class _Rx , class... _Valtys>
_Rx _Invoke_ret ( _Forced< _Rx, false ,
_Valtys &&...  _Vals 
)
inline
1467  { // INVOKE, implicitly converted to _Rx
1468  return (_STD invoke(_STD forward<_Valtys>(_Vals)...));
1469  }
auto invoke(_Callable &&_Obj, _Types &&..._Args) -> decltype(_Invoker< _Callable, _Types...>::_Call(_STD forward< _Callable >(_Obj), _STD forward< _Types >(_Args)...))
Definition: type_traits:1439
template<class... _Valtys>
auto _Invoke_ret ( _Forced< _Unforced, false ,
_Valtys &&...  _Vals 
) -> decltype(_STD invoke(_STD forward<_Valtys>(_Vals)...))
inline
1474  { // INVOKE, unchanged
1475  return (_STD invoke(_STD forward<_Valtys>(_Vals)...));
1476  }
auto invoke(_Callable &&_Obj, _Types &&..._Args) -> decltype(_Invoker< _Callable, _Types...>::_Call(_STD forward< _Callable >(_Obj), _STD forward< _Types >(_Args)...))
Definition: type_traits:1439
template<class _Ty >
reference_wrapper<const _Ty> cref ( const _Ty &  _Val)
inline
1635  { // create reference_wrapper<const _Ty> object
1637  }
Definition: type_traits:1576
_In_ int _Val
Definition: vcruntime_string.h:62
template<class _Ty >
void cref ( const _Ty &&  )
delete
template<class _Ty >
reference_wrapper<const _Ty> cref ( reference_wrapper< _Ty >  _Val)
inline
1645  { // create reference_wrapper<const _Ty> object
1646  return (_STD cref(_Val.get()));
1647  }
reference_wrapper< const _Ty > cref(const _Ty &_Val) _NOEXCEPT
Definition: type_traits:1634
_Ty & get() const _NOEXCEPT
Definition: type_traits:1596
template<class _Ty >
add_rvalue_reference<_Ty>::type declval ( )
template<class _Ty >
constexpr _Ty&& forward ( typename remove_reference< _Ty >::type &  _Arg)
inline
1275  { // forward an lvalue as either an lvalue or an rvalue
1276  return (static_cast<_Ty&&>(_Arg));
1277  }
template<class _Ty >
constexpr _Ty&& forward ( typename remove_reference< _Ty >::type &&  _Arg)
inline
1282  { // forward an rvalue as an rvalue
1283  static_assert(!is_lvalue_reference<_Ty>::value, "bad forward call");
1284  return (static_cast<_Ty&&>(_Arg));
1285  }
Definition: type_traits:221
template<class _Callable , class... _Types>
auto invoke ( _Callable &&  _Obj,
_Types &&...  _Args 
) -> decltype(_Invoker<_Callable, _Types...>::_Call( _STD forward<_Callable>(_Obj), _STD forward<_Types>(_Args)...))
inline
1442  { // INVOKE a callable object
1444  _STD forward<_Callable>(_Obj), _STD forward<_Types>(_Args)...));
1445  }
Definition: type_traits:1421
template<class _Ty >
constexpr remove_reference<_Ty>::type&& move ( _Ty &&  _Arg)
inline
1291  { // forward _Arg as movable
1292  return (static_cast<typename remove_reference<_Ty>::type&&>(_Arg));
1293  }
_Ty type
Definition: xtr1common:302
template<class _Ty >
constexpr _If<!is_nothrow_move_constructible<_Ty>::value && is_copy_constructible<_Ty>::value, const _Ty&, _Ty&&>::type move_if_noexcept ( _Ty &  _Arg)
inline
1301  { // forward _Arg as movable, sometimes
1302  return (_STD move(_Arg));
1303  }
constexpr remove_reference< _Ty >::type && move(_Ty &&_Arg) _NOEXCEPT
Definition: type_traits:1290
template<class _Ty >
reference_wrapper<_Ty> ref ( _Ty &  _Val)
inline
1618  { // create reference_wrapper<_Ty> object
1619  return (reference_wrapper<_Ty>(_Val));
1620  }
Definition: type_traits:1576
_In_ int _Val
Definition: vcruntime_string.h:62
template<class _Ty >
void ref ( const _Ty &&  )
delete
template<class _Ty >
reference_wrapper<_Ty> ref ( reference_wrapper< _Ty >  _Val)
inline
1628  { // create reference_wrapper<_Ty> object
1629  return (_STD ref(_Val.get()));
1630  }
reference_wrapper< _Ty > ref(_Ty &_Val) _NOEXCEPT
Definition: type_traits:1617
_Ty & get() const _NOEXCEPT
Definition: type_traits:1596