Metaprogramming
Utilities
Collaboration diagram for Metaprogramming:

## Classes

struct | std::__is_member_object_pointer_helper< typename >
struct | std::tr2::__reflection_typelist< _Elements >
struct | std::tr2::__reflection_typelist< _First, _Rest... >
struct | std::tr2::__reflection_typelist<>
struct | std::__remove_pointer_helper< _Tp, typename >
struct | std::add_const< _Tp >
struct | std::add_cv< _Tp >
struct | std::add_lvalue_reference< _Tp >
struct | std::add_pointer< _Tp >
struct | std::add_rvalue_reference< _Tp >
struct | std::add_volatile< _Tp >
struct | std::aligned_storage< _Len, _Align >
struct | std::aligned_union< _Len, _Types >
struct | std::alignment_of< _Tp >
struct | std::tr2::bases< _Tp >
struct | std::common_type< _Tp >
struct | std::conditional< _Cond, _Iftrue, _Iffalse >
struct | std::decay< _Tp >
struct | std::tr2::direct_bases< _Tp >
struct | std::enable_if< bool, _Tp >
struct | std::extent< typename, _Uint >
struct | std::has_virtual_destructor< _Tp >
struct | std::integral_constant< _Tp, __v >
struct | std::is_abstract< _Tp >
struct | std::is_arithmetic< _Tp >
struct | std::is_array< typename >
struct | std::is_assignable< _Tp, _Up >
struct | std::is_base_of< _Base, _Derived >
struct | std::is_class< _Tp >
struct | std::is_compound< _Tp >
struct | std::is_const< typename >
struct | std::is_constructible< _Tp, _Args >
struct | std::is_convertible< _From, _To >
struct | std::is_copy_assignable< _Tp >
struct | std::is_copy_constructible< _Tp >
struct | std::is_default_constructible< _Tp >
struct | std::is_destructible< _Tp >
struct | std::is_empty< _Tp >
struct | std::is_enum< _Tp >
struct | std::is_floating_point< _Tp >
struct | std::is_function< _Tp >
struct | std::is_fundamental< _Tp >
struct | std::is_integral< _Tp >
struct | std::is_layout_compatible< _Tp, _Up >
struct | std::is_literal_type< _Tp >
struct | std::is_lvalue_reference< typename >
struct | std::is_member_function_pointer< _Tp >
struct | std::is_member_pointer< _Tp >
struct | std::is_move_assignable< _Tp >
struct | std::is_move_constructible< _Tp >
struct | std::is_nothrow_assignable< _Tp, _Up >
struct | std::is_nothrow_constructible< _Tp, _Args >
struct | std::is_nothrow_copy_assignable< _Tp >
struct | std::is_nothrow_copy_constructible< _Tp >
struct | std::is_nothrow_default_constructible< _Tp >
struct | std::is_nothrow_destructible< _Tp >
struct | std::is_nothrow_move_assignable< _Tp >
struct | std::is_nothrow_move_constructible< _Tp >
struct | std::is_object< _Tp >
struct | std::is_pod< _Tp >
struct | std::is_pointer< _Tp >
struct | std::is_pointer_interconvertible_base_of< _Base, _Derived >
struct | std::is_polymorphic< _Tp >
struct | std::is_reference< _Tp >
struct | std::is_rvalue_reference< typename >
struct | std::is_same< _Tp, _Up >
struct | std::is_scalar< _Tp >
struct | std::is_signed< _Tp >
struct | std::is_standard_layout< _Tp >
struct | std::is_trivial< _Tp >
struct | std::is_trivially_assignable< _Tp, _Up >
struct | std::is_trivially_constructible< _Tp, _Args >
struct | std::is_trivially_copy_assignable< _Tp >
struct | std::is_trivially_copy_constructible< _Tp >
struct | std::is_trivially_copyable< _Tp >
struct | std::is_trivially_default_constructible< _Tp >
struct | std::is_trivially_destructible< _Tp >
struct | std::is_trivially_move_assignable< _Tp >
struct | std::is_trivially_move_constructible< _Tp >
struct | std::is_union< _Tp >
struct | std::is_unsigned< _Tp >
struct | std::is_void< _Tp >
struct | std::is_volatile< typename >
struct | std::make_signed< _Tp >
struct | std::make_unsigned< _Tp >
struct | std::rank< typename >
struct | std::remove_all_extents< _Tp >
struct | std::remove_const< _Tp >
struct | std::remove_cv< _Tp >
struct | std::remove_extent< _Tp >
struct | std::remove_reference< _Tp >
struct | std::remove_volatile< _Tp >
struct | std::result_of< _Signature >
struct | std::underlying_type< _Tp >

## Typedefs

template<bool _Cond, typename _If , typename _Else >
using | std::__conditional_t = typename __conditional< _Cond >::template type< _If, _Else >
template<bool _Cond, typename _Tp = void>
using | std::__enable_if_t = typename enable_if< _Cond, _Tp >::type
template<typename _ToElementType , typename _FromElementType >
using | std::__is_array_convertible = is_convertible< _FromElementType(*)[], _ToElementType(*)[]>
template<typename _Tp >
using | std::add_lvalue_reference_t = typename add_lvalue_reference< _Tp >::type
template<typename _Tp >
using | std::add_pointer_t = typename add_pointer< _Tp >::type
template<typename _Tp >
using | std::add_rvalue_reference_t = typename add_rvalue_reference< _Tp >::type
template<size_t _Len, size_t _Align = __alignof__(typename __aligned_storage_msa<_Len>::__type)>
using | std::aligned_storage_t = typename aligned_storage< _Len, _Align >::type
template<size_t _Len, typename... _Types>
using | std::aligned_union_t = typename aligned_union< _Len, _Types... >::type
template<typename... _Tp>
using | std::common_type_t = typename common_type< _Tp... >::type
template<bool _Cond, typename _Iftrue , typename _Iffalse >
using | std::conditional_t = typename conditional< _Cond, _Iftrue, _Iffalse >::type
template<typename _Tp >
using | std::decay_t = typename decay< _Tp >::type
template<bool _Cond, typename _Tp = void>
using | std::enable_if_t = typename enable_if< _Cond, _Tp >::type
using | std::false_type = __bool_constant< false >
template<typename _Tp >
using | std::make_signed_t = typename make_signed< _Tp >::type
template<typename _Tp >
using | std::make_unsigned_t = typename make_unsigned< _Tp >::type
template<typename _Tp >
using | std::remove_all_extents_t = typename remove_all_extents< _Tp >::type
template<typename _Tp >
using | std::remove_extent_t = typename remove_extent< _Tp >::type
template<typename _Tp >
using | std::remove_pointer_t = typename remove_pointer< _Tp >::type
template<typename _Tp >
using | std::remove_reference_t = typename remove_reference< _Tp >::type
template<typename _Tp >
using | std::result_of_t = typename result_of< _Tp >::type
using | std::true_type = __bool_constant< true >
using | std::integral_constant< _Tp, __v >::type = integral_constant< _Tp, __v >
using | std::enable_if< true, _Tp >::type = _Tp
template<typename _Tp , typename >
using | std::__conditional< bool >::type = _Tp
template<typename , typename _Up >
using | std::__conditional< false >::type = _Up
using | std::__is_implicitly_default_constructible_impl< _Tp >::type = decltype(__test(declval< _Tp >()))
using | std::__is_convertible_helper< _From, _To, bool >::type = typename is_void< _To >::type
using | std::__is_convertible_helper< _From, _To, false >::type = decltype(__test< _From, _To >(0))
using | std::remove_const< _Tp >::type = _Tp
using | std::remove_const< _Tp const >::type = _Tp
using | std::remove_volatile< _Tp >::type = _Tp
using | std::remove_volatile< _Tp volatile >::type = _Tp
using | std::remove_cv< _Tp >::type = _Tp
using | std::remove_cv< const _Tp >::type = _Tp
using | std::remove_cv< volatile _Tp >::type = _Tp
using | std::remove_cv< const volatile _Tp >::type = _Tp
using | std::add_const< _Tp >::type = _Tp const
using | std::add_volatile< _Tp >::type = _Tp volatile
using | std::add_cv< _Tp >::type = _Tp const volatile
using | std::remove_reference< _Tp >::type = _Tp
using | std::remove_reference< _Tp & >::type = _Tp
using | std::remove_reference< _Tp && >::type = _Tp
using | std::add_lvalue_reference< _Tp >::type = __add_lval_ref_t< _Tp >
using | std::add_rvalue_reference< _Tp >::type = __add_rval_ref_t< _Tp >
using | std::make_unsigned< _Tp >::type = typename __make_unsigned_selector< _Tp >::__type
using | std::make_signed< _Tp >::type = typename __make_signed_selector< _Tp >::__type
using | std::remove_extent< _Tp >::type = _Tp
using | std::remove_extent< _Tp[_Size]>::type = _Tp
using | std::remove_extent< _Tp[]>::type = _Tp
using | std::remove_all_extents< _Tp >::type = _Tp
using | std::remove_all_extents< _Tp[_Size]>::type = typename remove_all_extents< _Tp >::type
using | std::remove_all_extents< _Tp[]>::type = typename remove_all_extents< _Tp >::type
using | std::__remove_pointer_helper< _Tp, typename >::type = _Tp
using | std::__remove_pointer_helper< _Tp, _Up * >::type = _Up
using | std::__add_pointer_helper< _Tp, typename >::type = _Tp
using | std::__add_pointer_helper< _Tp, __void_t< _Tp * > >::type = _Tp *
using | std::add_pointer< _Tp & >::type = _Tp *
using | std::add_pointer< _Tp && >::type = _Tp *
using | std::aligned_union< _Len, _Types >::type = typename aligned_storage< _S_len, alignment_value >::type
using | std::decay< _Tp >::type = typename __decay_selector< _Tp >::type
using | std::decay< _Tp & >::type = typename __decay_selector< _Tp >::type
using | std::decay< _Tp && >::type = typename __decay_selector< _Tp >::type
using | std::conditional< _Cond, _Iftrue, _Iffalse >::type = _Iftrue
using | std::conditional< false, _Iftrue, _Iffalse >::type = _Iffalse
using | std::common_reference< _Tp0 >::type = _Tp0
template<typename _Tp >
using | std::underlying_type_t = typename underlying_type< _Tp >::type
using | std::integral_constant< _Tp, __v >::value_type = _Tp

## Functions

template<typename _Tp >
static void | std::__do_is_implicitly_default_constructible_impl::__helper (const _Tp &)
static false_type | std::__do_is_implicitly_default_constructible_impl::__test (...)
template<typename _Tp >
static true_type | std::__do_is_implicitly_default_constructible_impl::__test (const _Tp &, decltype(__helper< const _Tp & >({})) *=0)
constexpr | std::integral_constant< _Tp, __v >::operator value_type () const noexcept
template<typename _Tp >
constexpr _Require< __not_< __is_tuple_like< _Tp > >, is_move_constructible< _Tp >, is_move_assignable< _Tp > > | std::swap (_Tp &, _Tp &) noexcept(__and_< is_nothrow_move_constructible< _Tp >, is_nothrow_move_assignable< _Tp > >::value)
template<typename _Tp , size_t _Nm>
constexpr __enable_if_t< __is_swappable< _Tp >::value > | std::swap (_Tp(&__a)[_Nm], _Tp(&__b)[_Nm]) noexcept(__is_nothrow_swappable< _Tp >::value)

## Variables

struct { |
} | std::__aligned_storage_msa< _Len >::__type::__align |
struct { |
} | std::aligned_storage< _Len, _Align >::type::__align |
unsigned char | std::__aligned_storage_msa< _Len >::__type::__data [_Len]
unsigned char | std::aligned_storage< _Len, _Align >::type::__data [_Len]
static const size_t | std::__strictest_alignment< _Types >::_S_alignment
static const size_t | std::__strictest_alignment< _Tp, _Types... >::_S_alignment
static const size_t | std::__strictest_alignment< _Types >::_S_size
static const size_t | std::__strictest_alignment< _Tp, _Types... >::_S_size
static const size_t | std::aligned_union< _Len, _Types >::alignment_value
static constexpr _Tp | std::integral_constant< _Tp, __v >::value
template<typename... _Tp>
using | std::common_reference_t = typename common_reference< _Tp... >::type
template<typename _Tp , typename _Up >
constexpr bool | std::is_layout_compatible_v
template<typename _Base , typename _Derived >
constexpr bool | std::is_pointer_interconvertible_base_of_v
template<typename _S1 , typename _S2 , typename _M1 , typename _M2 >
constexpr bool | std::is_corresponding_member (_M1 _S1::*__m1, _M2 _S2::*__m2) noexcept
template<typename _Tp , typename _Mem >
constexpr bool | std::is_pointer_interconvertible_with_class (_Mem _Tp::*__mp) noexcept

## Detailed Description

Template utilities for compile-time introspection and modification, including type classification traits, type property inspection traits and type transformation traits.

Since
  C++11

## Typedef Documentation

## __conditional_t

template<bool _Cond, typename _If , typename _Else >

using std::__conditional_t = typedef typename __conditional<_Cond>::template type<_If, _Else>

Definition at line 156 of file type_traits.

## __enable_if_t

template<bool _Cond, typename _Tp = void>

using std::__enable_if_t = typedef typename enable_if<_Cond, _Tp>::type

Definition at line 138 of file type_traits.

## __is_array_convertible

template<typename _ToElementType , typename _FromElementType >

using std::__is_array_convertible = typedef is_convertible<_FromElementType(*)[], _ToElementType(*)[]>

Definition at line 1541 of file type_traits.

## add_lvalue_reference_t

template<typename _Tp >

using std::add_lvalue_reference_t = typedef typename add_lvalue_reference<_Tp>::type

Alias template for add_lvalue_reference.

Definition at line 1722 of file type_traits.

## add_pointer_t

template<typename _Tp >

using std::add_pointer_t = typedef typename add_pointer<_Tp>::type

Alias template for add_pointer.

Definition at line 2153 of file type_traits.

## add_rvalue_reference_t

template<typename _Tp >

using std::add_rvalue_reference_t = typedef typename add_rvalue_reference<_Tp>::type

Alias template for add_rvalue_reference.

Definition at line 1726 of file type_traits.

## aligned_storage_t

template<size_t _Len, size_t _Align = __alignof__(typename __aligned_storage_msa<_Len>::__type)>

using std::aligned_storage_t = typedef typename aligned_storage<_Len, _Align>::type

Alias template for aligned_storage.

Definition at line 2684 of file type_traits.

## aligned_union_t

template<size_t _Len, typename... _Types>

using std::aligned_union_t = typedef typename aligned_union<_Len, _Types...>::type

Definition at line 2687 of file type_traits.

## common_reference_t

template<typename... _Tp>

using std::common_reference_t = typedef typename common_reference<_Tp...>::type

Since
  C++20

Definition at line 3914 of file type_traits.

## common_type_t

template<typename... _Tp>

using std::common_type_t = typedef typename common_type<_Tp...>::type

Alias template for common_type.

Definition at line 2704 of file type_traits.

## conditional_t

template<bool _Cond, typename _Iftrue , typename _Iffalse >

using std::conditional_t = typedef typename conditional<_Cond, _Iftrue, _Iffalse>::type

Alias template for conditional.

Definition at line 2700 of file type_traits.

## decay_t

template<typename _Tp >

using std::decay_t = typedef typename decay<_Tp>::type

Alias template for decay.

Definition at line 2692 of file type_traits.

## enable_if_t

template<bool _Cond, typename _Tp = void>

using std::enable_if_t = typedef typename enable_if<_Cond, _Tp>::type

Alias template for enable_if.

Definition at line 2696 of file type_traits.

## false_type

using std::false_type = typedef __bool_constant<false>

The type used as a compile-time boolean with false value.

Definition at line 114 of file type_traits.

## make_signed_t

template<typename _Tp >

using std::make_signed_t = typedef typename make_signed<_Tp>::type

Alias template for make_signed.

Definition at line 2057 of file type_traits.

## make_unsigned_t

template<typename _Tp >

using std::make_unsigned_t = typedef typename make_unsigned<_Tp>::type

Alias template for make_unsigned.

Definition at line 2061 of file type_traits.

## remove_all_extents_t

template<typename _Tp >

using std::remove_all_extents_t = typedef typename remove_all_extents<_Tp>::type

Alias template for remove_all_extents.

Definition at line 2099 of file type_traits.

## remove_extent_t

template<typename _Tp >

using std::remove_extent_t = typedef typename remove_extent<_Tp>::type

Alias template for remove_extent.

Definition at line 2095 of file type_traits.

## remove_pointer_t

template<typename _Tp >

using std::remove_pointer_t = typedef typename remove_pointer<_Tp>::type

Alias template for remove_pointer.

Definition at line 2149 of file type_traits.

## remove_reference_t

template<typename _Tp >

using std::remove_reference_t = typedef typename remove_reference<_Tp>::type

Alias template for remove_reference.

Definition at line 1718 of file type_traits.

## result_of_t

template<typename _Tp >

using std::result_of_t = typedef typename result_of<_Tp>::type

Alias template for result_of.

Definition at line 2712 of file type_traits.

## true_type

using std::true_type = typedef __bool_constant<true>

The type used as a compile-time boolean with true value.

Definition at line 111 of file type_traits.

## type [1/44]

template<typename _Tp , _Tp __v>

using std::integral_constant< _Tp, __v >::type = integral_constant<_Tp, __v>

Definition at line 91 of file type_traits.

## type [2/44]

template<typename _Tp >

using std::enable_if< true, _Tp >::type = _Tp

Definition at line 134 of file type_traits.

## type [3/44]

template<bool >
template<typename _Tp , typename >

using std::__conditional< bool >::type = _Tp

Definition at line 144 of file type_traits.

## type [4/44]

template<typename , typename _Up >

using std::__conditional< false >::type = _Up

Definition at line 151 of file type_traits.

## type [5/44]

template<typename _Tp >

using std::__is_implicitly_default_constructible_impl< _Tp >::type = decltype(__test(declval<_Tp>()))

Definition at line 1335 of file type_traits.

## type [6/44]

template<typename _From , typename _To , bool = __or_<is_void<_From>, is_function<_To>, is_array<_To>>::value>

using std::__is_convertible_helper< _From, _To, bool >::type = typename is_void<_To>::type

Definition at line 1507 of file type_traits.

## type [7/44]

template<typename _From , typename _To >

using std::__is_convertible_helper< _From, _To, false >::type = decltype(__test<_From, _To>(0))

Definition at line 1528 of file type_traits.

## type [8/44]

template<typename _Tp >

using std::remove_const< _Tp >::type = _Tp

Definition at line 1605 of file type_traits.

## type [9/44]

template<typename _Tp >

using std::remove_const< _Tp const >::type = _Tp

Definition at line 1609 of file type_traits.

## type [10/44]

template<typename _Tp >

using std::remove_volatile< _Tp >::type = _Tp

Definition at line 1614 of file type_traits.

## type [11/44]

template<typename _Tp >

using std::remove_volatile< _Tp volatile >::type = _Tp

Definition at line 1618 of file type_traits.

## type [12/44]

template<typename _Tp >

using std::remove_cv< _Tp >::type = _Tp

Definition at line 1628 of file type_traits.

## type [13/44]

template<typename _Tp >

using std::remove_cv< const _Tp >::type = _Tp

Definition at line 1632 of file type_traits.

## type [14/44]

template<typename _Tp >

using std::remove_cv< volatile _Tp >::type = _Tp

Definition at line 1636 of file type_traits.

## type [15/44]

template<typename _Tp >

using std::remove_cv< const volatile _Tp >::type = _Tp

Definition at line 1640 of file type_traits.

## type [16/44]

template<typename _Tp >

using std::add_const< _Tp >::type = _Tp const

Definition at line 1646 of file type_traits.

## type [17/44]

template<typename _Tp >

using std::add_volatile< _Tp >::type = _Tp volatile

Definition at line 1651 of file type_traits.

## type [18/44]

template<typename _Tp >

using std::add_cv< _Tp >::type = _Tp const volatile

Definition at line 1656 of file type_traits.

## type [19/44]

template<typename _Tp >

using std::remove_reference< _Tp >::type = _Tp

Definition at line 1694 of file type_traits.

## type [20/44]

template<typename _Tp >

using std::remove_reference< _Tp & >::type = _Tp

Definition at line 1698 of file type_traits.

## type [21/44]

template<typename _Tp >

using std::remove_reference< _Tp && >::type = _Tp

Definition at line 1702 of file type_traits.

## type [22/44]

template<typename _Tp >

using std::add_lvalue_reference< _Tp >::type = __add_lval_ref_t<_Tp>

Definition at line 1708 of file type_traits.

## type [23/44]

template<typename _Tp >

using std::add_rvalue_reference< _Tp >::type = __add_rval_ref_t<_Tp>

Definition at line 1713 of file type_traits.

## type [24/44]

template<typename _Tp >

using std::make_unsigned< _Tp >::type = typename __make_unsigned_selector<_Tp>::__type

Definition at line 1914 of file type_traits.

## type [25/44]

template<typename _Tp >

using std::make_signed< _Tp >::type = typename __make_signed_selector<_Tp>::__type

Definition at line 2046 of file type_traits.

## type [26/44]

template<typename _Tp >

using std::remove_extent< _Tp >::type = _Tp

Definition at line 2069 of file type_traits.

## type [27/44]

template<typename _Tp , std::size_t _Size>

using std::remove_extent< _Tp[_Size]>::type = _Tp

Definition at line 2073 of file type_traits.

## type [28/44]

template<typename _Tp >

using std::remove_extent< _Tp[]>::type = _Tp

Definition at line 2077 of file type_traits.

## type [29/44]

template<typename _Tp >

using std::remove_all_extents< _Tp >::type = _Tp

Definition at line 2082 of file type_traits.

## type [30/44]

template<typename _Tp , std::size_t _Size>

using std::remove_all_extents< _Tp[_Size]>::type = typename remove_all_extents<_Tp>::type

Definition at line 2086 of file type_traits.

## type [31/44]

template<typename _Tp >

using std::remove_all_extents< _Tp[]>::type = typename remove_all_extents<_Tp>::type

Definition at line 2090 of file type_traits.

## type [32/44]

template<typename _Tp , typename >

using std::__remove_pointer_helper< _Tp, typename >::type = _Tp

Definition at line 2112 of file type_traits.

## type [33/44]

template<typename _Tp , typename _Up >

using std::__remove_pointer_helper< _Tp, _Up * >::type = _Up

Definition at line 2116 of file type_traits.

## type [34/44]

template<typename _Tp , typename = void>

using std::__add_pointer_helper< _Tp, typename >::type = _Tp

Definition at line 2126 of file type_traits.

## type [35/44]

template<typename _Tp >

using std::__add_pointer_helper< _Tp, __void_t< _Tp * > >::type = _Tp*

Definition at line 2130 of file type_traits.

## type [36/44]

template<typename _Tp >

using std::add_pointer< _Tp & >::type = _Tp*

Definition at line 2140 of file type_traits.

## type [37/44]

template<typename _Tp >

using std::add_pointer< _Tp && >::type = _Tp*

Definition at line 2144 of file type_traits.

## type [38/44]

template<size_t _Len, typename... _Types>

using std::aligned_union< _Len, _Types >::type = typename aligned_storage<_S_len, alignment_value>::type

The storage.

Definition at line 2240 of file type_traits.

## type [39/44]

template<typename _Tp >

using std::decay< _Tp >::type = typename __decay_selector<_Tp>::type

Definition at line 2271 of file type_traits.

## type [40/44]

template<typename _Tp >

using std::decay< _Tp & >::type = typename __decay_selector<_Tp>::type

Definition at line 2275 of file type_traits.

## type [41/44]

template<typename _Tp >

using std::decay< _Tp && >::type = typename __decay_selector<_Tp>::type

Definition at line 2279 of file type_traits.

## type [42/44]

template<bool _Cond, typename _Iftrue , typename _Iffalse >

using std::conditional< _Cond, _Iftrue, _Iffalse >::type = _Iftrue

Definition at line 2320 of file type_traits.

## type [43/44]

template<typename _Iftrue , typename _Iffalse >

using std::conditional< false, _Iftrue, _Iffalse >::type = _Iffalse

Definition at line 2325 of file type_traits.

## type [44/44]

template<typename _Tp0 >

using std::common_reference< _Tp0 >::type = _Tp0

Definition at line 3924 of file type_traits.

## underlying_type_t

template<typename _Tp >

using std::underlying_type_t = typedef typename underlying_type<_Tp>::type

Alias template for underlying_type.

Definition at line 2708 of file type_traits.

## value_type

template<typename _Tp , _Tp __v>

using std::integral_constant< _Tp, __v >::value_type = _Tp

Definition at line 90 of file type_traits.

## Function Documentation

## is_corresponding_member()

template<typename _S1 , typename _S2 , typename _M1 , typename _M2 >

constexpr bool std::is_corresponding_member | ( | _M1 _S1::* | __m1,
|  | _M2 _S2::* | __m2
| ) |  |

constexpr noexcept

Since
  C++20

Definition at line 3704 of file type_traits.

## is_pointer_interconvertible_with_class()

template<typename _Tp , typename _Mem >

constexpr bool std::is_pointer_interconvertible_with_class | ( | _Mem _Tp::* | __mp | ) |

constexpr noexcept

True if `__mp` points to the first member of a standard-layout type.

Returns
  true if `s.*__mp` is pointer-interconvertible with `s`

Since
  C++20

Definition at line 3734 of file type_traits.

## operator value_type()

template<typename _Tp , _Tp __v>

constexpr std::integral_constant< _Tp, __v >::operator value_type | ( |  | ) | const

inline constexpr noexcept

Definition at line 92 of file type_traits.

## swap() [1/2]

template<typename _Tp >

constexpr _Require< __not_< __is_tuple_like< _Tp > >, is_move_constructible< _Tp >, is_move_assignable< _Tp > > std::swap | ( | _Tp & | __a,
|  | _Tp & | __b
| ) |  |

inline constexpr noexcept

Swaps two values.

Parameters

  __a | A thing of arbitrary type.
  __b | Another thing of arbitrary type.

Returns
  Nothing.

Definition at line 213 of file move.h.

## swap() [2/2]

template<typename _Tp , size_t _Nm>

constexpr __enable_if_t< __is_swappable< _Tp >::value > std::swap | ( | _Tp(&) | __a[_Nm],
|  | _Tp(&) | __b[_Nm]
| ) |  |

inline constexpr noexcept

Swap the contents of two arrays.

Definition at line 237 of file move.h.

## Variable Documentation

## __data [1/2]

template<std::size_t _Len>

unsigned char std::__aligned_storage_msa< _Len >::__type::__data[_Len]

Definition at line 2161 of file type_traits.

## __data [2/2]

template<std::size_t _Len, std::size_t _Align = __alignof__(typename __aligned_storage_msa<_Len>::__type)>

unsigned char std::aligned_storage< _Len, _Align >::type::__data[_Len]

Definition at line 2187 of file type_traits.

## _S_alignment [1/2]

template<typename... _Types>

const size_t std::__strictest_alignment< _Types >::_S_alignment

static

Definition at line 2195 of file type_traits.

## _S_alignment [2/2]

template<typename _Tp , typename... _Types>

const size_t std::__strictest_alignment< _Tp, _Types... >::_S_alignment

static

Definition at line 2202 of file type_traits.

## _S_size [1/2]

template<typename... _Types>

const size_t std::__strictest_alignment< _Types >::_S_size

static

Definition at line 2196 of file type_traits.

## _S_size [2/2]

template<typename _Tp , typename... _Types>

const size_t std::__strictest_alignment< _Tp, _Types... >::_S_size

static

Definition at line 2205 of file type_traits.

## alignment_value

template<size_t _Len, typename... _Types>

const size_t std::aligned_union< _Len, _Types >::alignment_value

static

The value of the strictest alignment of _Types.

Definition at line 2238 of file type_traits.

## is_layout_compatible_v

template<typename _Tp , typename _Up >

constexpr bool std::is_layout_compatible_v

constexpr

Since
  C++20

Definition at line 3693 of file type_traits.

## is_pointer_interconvertible_base_of_v

template<typename _Base , typename _Derived >

constexpr bool std::is_pointer_interconvertible_base_of_v

constexpr

Since
  C++20

Definition at line 3721 of file type_traits.

## value

template<typename _Tp , _Tp __v>

constexpr _Tp std::integral_constant< _Tp, __v >::value

static constexpr

Definition at line 89 of file type_traits.