libstdc++
GNU C++ library
Loading...
Searching...
No Matches
Metaprogramming
Collaboration diagram for Metaprogramming:

Classes

struct  std::__conditional< bool >
struct  std::__conditional< false >
struct  std::__do_is_implicitly_default_constructible_impl
struct  std::__is_implicitly_default_constructible< _Tp >
struct  std::__is_implicitly_default_constructible_impl< _Tp >
struct  std::__is_implicitly_default_constructible_safe< _Tp >
struct  std::__is_nothrow_new_constructible_impl< _Tp, _Args >
struct  std::__strictest_alignment< _Types >
struct  std::__strictest_alignment< _Tp, _Types... >
struct  std::_Build_index_tuple< _Num >
struct  std::_Index_tuple< _Indexes >
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_storage< _Len, _Align >::type
struct  std::aligned_union< _Len, _Types >
struct  std::alignment_of< _Tp >
struct  std::basic_common_reference< _Tp, _Up, _TQual, _UQual >
struct  std::common_reference< _Tp >
struct  std::common_reference< _Tp0 >
struct  std::common_reference<>
struct  std::common_type< _Tp >
struct  std::conditional< _Cond, _Iftrue, _Iffalse >
struct  std::conditional< false, _Iftrue, _Iffalse >
struct  std::decay< _Tp >
struct  std::decay< _Tp & >
struct  std::decay< _Tp && >
struct  std::enable_if< bool, _Tp >
struct  std::enable_if< true, _Tp >
struct  std::extent< typename, _Uint >
struct  std::extent< _Tp[], 0 >
struct  std::extent< _Tp[], _Uint >
struct  std::extent< _Tp[_Size], 0 >
struct  std::extent< _Tp[_Size], _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< _Tp >
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< _Tp >
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_lvalue_reference< _Tp & >
struct  std::is_member_function_pointer< _Tp >
struct  std::is_member_object_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_rvalue_reference< _Tp && >
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_void< const void >
struct  std::is_void< const volatile void >
struct  std::is_void< void >
struct  std::is_void< volatile void >
struct  std::is_volatile< _Tp >
struct  std::make_signed< _Tp >
struct  std::make_unsigned< _Tp >
struct  std::rank< _Tp >
struct  std::remove_all_extents< _Tp >
struct  std::remove_const< _Tp >
struct  std::remove_const< _Tp const >
struct  std::remove_cv< _Tp >
struct  std::remove_extent< _Tp >
struct  std::remove_pointer< _Tp >
struct  std::remove_reference< _Tp >
struct  std::remove_volatile< _Tp >
struct  std::remove_volatile< _Tp volatile >
struct  std::result_of< _Signature >
struct  std::result_of< _Functor(_ArgTypes...)>
struct  std::tr2::__reflection_typelist< _Elements >
struct  std::tr2::__reflection_typelist< _First, _Rest... >
struct  std::tr2::__reflection_typelist< _First, _Rest... >::first
struct  std::tr2::__reflection_typelist< _First, _Rest... >::rest
struct  std::tr2::__reflection_typelist<>
struct  std::tr2::bases< _Tp >
struct  std::tr2::direct_bases< _Tp >
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(*)[]>
using std::aligned_union< _Len, _Types >::__strictest = __strictest_alignment<_Types...>
using std::_Build_index_tuple< _Num >::__type = __make_integer_seq<_IdxTuple, size_t, _Num>
template<typename, size_t... _Indices>
using std::_Build_index_tuple< _Num >::_IdxTuple = _Index_tuple<_Indices...>
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 = __aligned_storage_default_alignment(_Len)>
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>
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::add_const< _Tp >::type = _Tp const
using std::add_cv< _Tp >::type = _Tp const volatile
using std::add_lvalue_reference< _Tp >::type = __add_lval_ref_t<_Tp>
using std::add_pointer< _Tp >::type = __add_pointer(_Tp)
using std::add_rvalue_reference< _Tp >::type = __add_rval_ref_t<_Tp>
using std::add_volatile< _Tp >::type = _Tp volatile
using std::aligned_union< _Len, _Types >::type = typename aligned_storage<_S_len, alignment_value>::type
using std::common_reference< _Tp0 >::type = _Tp0
using std::conditional< _Cond, _Iftrue, _Iffalse >::type = _Iftrue
using std::conditional< false, _Iftrue, _Iffalse >::type = _Iffalse
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::enable_if< true, _Tp >::type = _Tp
using std::integral_constant< _Tp, __v >::type = integral_constant<_Tp, __v>
using std::make_signed< _Tp >::type = typename __make_signed_selector<_Tp>::__type
using std::make_unsigned< _Tp >::type = typename __make_unsigned_selector<_Tp>::__type
using std::remove_all_extents< _Tp >::type = __remove_all_extents(_Tp)
using std::remove_const< _Tp >::type = _Tp
using std::remove_const< _Tp const >::type = _Tp
using std::remove_cv< _Tp >::type = __remove_cv(_Tp)
using std::remove_extent< _Tp >::type = __remove_extent(_Tp)
using std::remove_pointer< _Tp >::type = __remove_pointer(_Tp)
using std::remove_reference< _Tp >::type = __remove_reference(_Tp)
using std::remove_volatile< _Tp >::type = _Tp
using std::remove_volatile< _Tp volatile >::type = _Tp
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

unsigned char std::aligned_storage< _Len, _Align >::type::__data [_Len]
template<typename _Tp, typename... _Args>
constexpr bool std::__is_nothrow_new_constructible
static const size_t std::__strictest_alignment< _Types >::_S_alignment = 0
static const size_t std::__strictest_alignment< _Tp, _Types... >::_S_alignment
static const size_t std::aligned_union< _Len, _Types >::_S_len
static const size_t std::__strictest_alignment< _Types >::_S_size = 0
static const size_t std::__strictest_alignment< _Tp, _Types... >::_S_size
template<size_t _Len, typename... _Types>
const size_t std::aligned_union< _Len, _Types... >::alignment_value
static const size_t std::aligned_union< _Len, _Types >::alignment_value = __strictest::_S_alignment
static constexpr _Tp std::integral_constant< _Tp, __v >::value = __v
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 = __is_layout_compatible(_Tp, _Up)
template<typename _Base, typename _Derived>
constexpr bool std::is_pointer_interconvertible_base_of_v = __is_pointer_interconvertible_base_of(_Base, _Derived)
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