libstdc++
Metaprogramming
Collaboration diagram for Metaprogramming:

Classes

struct  std::__is_nullptr_t< _Tp >
 
struct  std::tr2::__reflection_typelist< _Elements >
 
struct  std::add_lvalue_reference< _Tp >
 
struct  std::add_rvalue_reference< _Tp >
 
struct  std::common_type< _Tp >
 
struct  std::conditional< _Cond, _Iftrue, _Iffalse >
 
struct  std::enable_if< bool, _Tp >
 
struct  std::extent< typename, _Uint >
 
struct  std::is_abstract< _Tp >
 
struct  std::is_arithmetic< _Tp >
 
struct  std::is_array< typename >
 
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_convertible< _From, _To >
 
struct  std::is_empty< _Tp >
 
struct  std::is_enum< _Tp >
 
struct  std::is_final< _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_lvalue_reference< typename >
 
struct  std::is_member_function_pointer< _Tp >
 
struct  std::is_member_object_pointer< _Tp >
 
struct  std::is_member_pointer< _Tp >
 
struct  std::is_null_pointer< _Tp >
 
struct  std::is_object< _Tp >
 
struct  std::is_pointer< _Tp >
 
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_union< _Tp >
 
struct  std::is_void< _Tp >
 
struct  std::is_volatile< typename >
 
struct  std::rank< typename >
 
class  std::reference_wrapper< _Tp >
 
struct  std::remove_all_extents< _Tp >
 
struct  std::remove_cv< _Tp >
 
struct  std::remove_pointer< _Tp >
 
class  std::result_of< _Signature >
 
struct  std::underlying_type< _Tp >
 

Macros

#define __cpp_lib_is_final
 
#define __cpp_lib_is_null_pointer
 
#define __cpp_lib_result_of_sfinae
 
#define __cpp_lib_transformation_trait_aliases
 
#define __cpp_lib_void_t
 

Typedefs

template<bool __v>
using std::__bool_constant = integral_constant< bool, __v >
 
template<typename _Tp >
using std::__decay_and_strip = __strip_reference_wrapper< __decay_t< _Tp > >
 
template<typename _Tp >
using std::__decay_t = typename decay< _Tp >::type
 
template<typename _Default , template< typename... > class _Op, typename... _Args>
using std::__detected_or = __detector< _Default, void, _Op, _Args... >
 
template<typename _Default , template< typename... > class _Op, typename... _Args>
using std::__detected_or_t = typename __detected_or< _Default, _Op, _Args... >::type
 
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 , typename... _Args>
using std::__is_nothrow_constructible_impl = __is_nt_constructible_impl< __is_constructible(_Tp, _Args...), _Tp, _Args... >
 
template<typename _Tp , typename... _Types>
using std::__is_one_of = __or_< is_same< _Tp, _Types >... >
 
template<typename _Tp >
using std::__is_signed_integer = __is_one_of< __remove_cv_t< _Tp >, signed char, signed short, signed int, signed long, signed long long >
 
template<typename _Tp >
using std::__is_standard_integer = __or_< __is_signed_integer< _Tp >, __is_unsigned_integer< _Tp > >
 
template<typename _Tp >
using std::__is_unsigned_integer = __is_one_of< __remove_cv_t< _Tp >, unsigned char, unsigned short, unsigned int, unsigned long, unsigned long long >
 
template<typename _Tp >
using std::__remove_cv_t = typename remove_cv< _Tp >::type
 
template<typename _Tp >
using std::__remove_cvref_t = typename remove_cv< typename remove_reference< _Tp >::type >::type
 
template<typename _Tp >
using std::__type_identity_t = typename __type_identity< _Tp >::type
 
template<typename... >
using std::__void_t = void
 
template<typename... _Cond>
using std::_Require = __enable_if_t< __and_< _Cond... >::value >
 
template<typename _Tp >
using std::add_const_t = typename add_const< _Tp >::type
 
template<typename _Tp >
using std::add_cv_t = typename add_cv< _Tp >::type
 
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<typename _Tp >
using std::add_volatile_t = typename add_volatile< _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
 
typedef integral_constant< bool, false > std::false_type
 
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_const_t = typename remove_const< _Tp >::type
 
template<typename _Tp >
using std::remove_cv_t = typename remove_cv< _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::remove_volatile_t = typename remove_volatile< _Tp >::type
 
template<typename _Tp >
using std::result_of_t = typename result_of< _Tp >::type
 
typedef integral_constant< bool, true > std::true_type
 
template<typename _Tp >
using std::underlying_type_t = typename underlying_type< _Tp >::type
 
template<typename... >
using std::void_t = void
 

Functions

template<typename _Tp , size_t = sizeof(_Tp)>
constexpr true_type std::__is_complete_or_unbounded (__type_identity< _Tp >)
 
template<typename _TypeIdentity , typename _NestedType = typename _TypeIdentity::type>
constexpr __or_< is_reference< _NestedType >, is_function< _NestedType >, is_void< _NestedType >, __is_array_unknown_bounds< _NestedType > >::type std::__is_complete_or_unbounded (_TypeIdentity)
 
template<typename _Tp >
std::__is_nullptr_t is_null_pointer std::_GLIBCXX_DEPRECATED_SUGGEST ("std::is_null_pointer")
 
template<typename _Tp >
auto std::declval () noexcept -> decltype(__declval< _Tp >(0))
 

Variables

std::is_reference std::_GLIBCXX_DEPRECATED_SUGGEST
 
static const size_t std::aligned_union< _Len, _Types >::alignment_value
 
static constexpr _Tp std::integral_constant< _Tp, __v >::value
 

Detailed Description

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

Typedef Documentation

◆ add_const_t

template<typename _Tp >
using std::add_const_t = typedef typename add_const<_Tp>::type

Alias template for add_const.

Definition at line 1578 of file type_traits.

◆ add_cv_t

template<typename _Tp >
using std::add_cv_t = typedef typename add_cv<_Tp>::type

Alias template for add_cv.

Definition at line 1586 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 1639 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 2044 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 1643 of file type_traits.

◆ add_volatile_t

template<typename _Tp >
using std::add_volatile_t = typedef typename add_volatile<_Tp>::type

Alias template for add_volatile.

Definition at line 1582 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 2543 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 2562 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 2558 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 2550 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 2554 of file type_traits.

◆ false_type

typedef integral_constant<bool, false> std::false_type

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

Definition at line 78 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 1961 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 1965 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 2003 of file type_traits.

◆ remove_const_t

template<typename _Tp >
using std::remove_const_t = typedef typename remove_const<_Tp>::type

Alias template for remove_const.

Definition at line 1566 of file type_traits.

◆ remove_cv_t

template<typename _Tp >
using std::remove_cv_t = typedef typename remove_cv<_Tp>::type

Alias template for remove_cv.

Definition at line 1574 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 1999 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 2040 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 1635 of file type_traits.

◆ remove_volatile_t

template<typename _Tp >
using std::remove_volatile_t = typedef typename remove_volatile<_Tp>::type

Alias template for remove_volatile.

Definition at line 1570 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 2570 of file type_traits.

◆ true_type

typedef integral_constant<bool, true> std::true_type

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

Definition at line 75 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 2566 of file type_traits.

◆ void_t

template<typename... >
using std::void_t = typedef void

A metafunction that always yields void, used for detecting valid types.

Definition at line 2576 of file type_traits.

Variable Documentation

◆ 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 2117 of file type_traits.