libstdc++
Metaprogramming
Collaboration diagram for Metaprogramming:

Topics

 Variable templates for type traits

Classes

struct  std::__is_nullptr_t< _Tp >
struct  std::tr2::__reflection_typelist< _Elements >
struct  std::tr2::__reflection_typelist< _First, _Rest... >
struct  std::tr2::__reflection_typelist<>
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_unique_object_representations< _Tp >
struct  std::has_virtual_destructor< _Tp >
struct  std::integral_constant< _Tp, __v >
struct  std::invoke_result< _Functor, _ArgTypes >
struct  std::is_abstract< _Tp >
struct  std::is_aggregate< _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_bounded_array< _Tp >
struct  std::is_class< _Tp >
struct  std::is_compound< _Tp >
struct  std::is_const< typename >
struct  std::is_constructible< _Tp, _Args >
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_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_invocable< _Fn, _ArgTypes >
struct  std::is_invocable_r< _Ret, _Fn, _ArgTypes >
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_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_convertible< _From, _To >
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_invocable< _Fn, _ArgTypes >
struct  std::is_nothrow_invocable_r< _Ret, _Fn, _ArgTypes >
struct  std::is_nothrow_move_assignable< _Tp >
struct  std::is_nothrow_move_constructible< _Tp >
struct  std::is_nothrow_swappable< _Tp >
struct  std::is_nothrow_swappable_with< _Tp, _Up >
struct  std::is_null_pointer< _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_swappable< _Tp >
struct  std::is_swappable_with< _Tp, _Up >
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_unbounded_array< _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_pointer< _Tp >
struct  std::remove_reference< _Tp >
struct  std::remove_volatile< _Tp >
struct  std::result_of< _Signature >
struct  std::underlying_type< _Tp >
struct  std::unwrap_ref_decay< _Tp >
struct  std::unwrap_reference< _Tp >

Macros

#define __cpp_lib_bool_constant
#define __cpp_lib_bounded_array_traits
#define __cpp_lib_has_unique_object_representations
#define __cpp_lib_is_aggregate
#define __cpp_lib_is_constant_evaluated
#define __cpp_lib_is_final
#define __cpp_lib_is_invocable
#define __cpp_lib_is_layout_compatible
#define __cpp_lib_is_nothrow_convertible
#define __cpp_lib_is_null_pointer
#define __cpp_lib_is_pointer_interconvertible
#define __cpp_lib_is_swappable
#define __cpp_lib_logical_traits
#define __cpp_lib_result_of_sfinae
#define __cpp_lib_transformation_trait_aliases
#define __cpp_lib_type_trait_variable_templates
#define __cpp_lib_unwrap_ref
#define __cpp_lib_void_t

Typedefs

template<bool _Cond, typename _If, typename _Else>
using std::__conditional_t
template<bool _Cond, typename _Tp = void>
using std::__enable_if_t
template<typename _ToElementType, typename _FromElementType>
using std::__is_array_convertible
template<typename _Tp>
using std::add_const_t
template<typename _Tp>
using std::add_cv_t
template<typename _Tp>
using std::add_lvalue_reference_t
template<typename _Tp>
using std::add_pointer_t
template<typename _Tp>
using std::add_rvalue_reference_t
template<typename _Tp>
using std::add_volatile_t
template<size_t _Len, size_t _Align = __alignof__(typename __aligned_storage_msa<_Len>::__type)>
using std::aligned_storage_t
template<size_t _Len, typename... _Types>
using std::aligned_union_t
template<bool __v>
using std::bool_constant
template<typename... _Tp>
using std::common_reference_t
template<typename... _Tp>
using std::common_type_t
template<bool _Cond, typename _Iftrue, typename _Iffalse>
using std::conditional_t
template<typename _Tp>
using std::decay_t
template<bool _Cond, typename _Tp = void>
using std::enable_if_t
using std::false_type
template<typename _Fn, typename... _Args>
using std::invoke_result_t
template<typename _Tp>
using std::make_signed_t
template<typename _Tp>
using std::make_unsigned_t
template<typename _Tp>
using std::remove_all_extents_t
template<typename _Tp>
using std::remove_const_t
template<typename _Tp>
using std::remove_cv_t
template<typename _Tp>
using std::remove_extent_t
template<typename _Tp>
using std::remove_pointer_t
template<typename _Tp>
using std::remove_reference_t
template<typename _Tp>
using std::remove_volatile_t
template<typename _Tp>
using std::result_of_t
using std::true_type
template<typename _Tp>
using std::underlying_type_t
template<typename...>
using std::void_t

Functions

constexpr bool std::is_constant_evaluated () noexcept
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
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

template<size_t _Len, typename... _Types>
const size_t std::aligned_union< _Len, _Types... >::alignment_value
template<typename _Tp, size_t _Size>
constexpr bool std::is_bounded_array_v< _Tp[_Size]>
template<typename _From, typename _To>
constexpr bool std::is_nothrow_convertible_v
template<typename _Tp>
constexpr bool std::is_nothrow_swappable_v
template<typename _Tp, typename _Up>
constexpr bool std::is_nothrow_swappable_with_v
template<typename _Tp>
constexpr bool std::is_swappable_v
template<typename _Tp, typename _Up>
constexpr bool std::is_swappable_with_v
template<typename _Tp>
constexpr bool std::is_unbounded_array_v< _Tp[]>
template<typename _Tp>
using std::remove_cvref_t
#define __cpp_lib_remove_cvref
template<typename _Tp>
using std::type_identity_t
#define __cpp_lib_type_identity
template<typename _Tp>
using std::unwrap_reference_t
template<typename _Tp>
using std::unwrap_ref_decay_t
template<typename... _Bn>
constexpr bool std::disjunction_v
template<typename _Pp>
constexpr bool std::negation_v
template<typename _Tp>
constexpr bool std::is_null_pointer_v
template<typename _Tp>
constexpr bool std::is_integral_v
template<typename _Tp>
constexpr bool std::is_floating_point_v
template<typename _Tp>
constexpr bool std::is_array_v
template<typename _Tp>
constexpr bool std::is_array_v< _Tp[]>
template<typename _Tp, size_t _Num>
constexpr bool std::is_array_v< _Tp[_Num]>
template<typename _Tp>
constexpr bool std::is_pointer_v
template<typename _Tp>
constexpr bool std::is_lvalue_reference_v
template<typename _Tp>
constexpr bool std::is_lvalue_reference_v< _Tp & >
template<typename _Tp>
constexpr bool std::is_rvalue_reference_v
template<typename _Tp>
constexpr bool std::is_rvalue_reference_v< _Tp && >
template<typename _Tp>
constexpr bool std::is_member_object_pointer_v
template<typename _Tp>
constexpr bool std::is_member_function_pointer_v
template<typename _Tp>
constexpr bool std::is_enum_v
template<typename _Tp>
constexpr bool std::is_union_v
template<typename _Tp>
constexpr bool std::is_class_v
template<typename _Tp>
constexpr bool std::is_function_v
template<typename _Tp>
constexpr bool std::is_reference_v
template<typename _Tp>
constexpr bool std::is_reference_v< _Tp & >
template<typename _Tp>
constexpr bool std::is_reference_v< _Tp && >
template<typename _Tp>
constexpr bool std::is_arithmetic_v
template<typename _Tp>
constexpr bool std::is_fundamental_v
template<typename _Tp>
constexpr bool std::is_object_v
template<typename _Tp>
constexpr bool std::is_scalar_v
template<typename _Tp>
constexpr bool std::is_compound_v
template<typename _Tp>
constexpr bool std::is_member_pointer_v
template<typename _Tp>
constexpr bool std::is_const_v
template<typename _Tp>
constexpr bool std::is_const_v< const _Tp >
template<typename _Tp>
constexpr bool std::is_volatile_v
template<typename _Tp>
constexpr bool std::is_volatile_v< volatile _Tp >
template<typename _Tp>
constexpr bool std::is_trivial_v
template<typename _Tp>
constexpr bool std::is_trivially_copyable_v
template<typename _Tp>
constexpr bool std::is_standard_layout_v
template<typename _Tp>
constexpr bool std::is_pod_v
template<typename _Tp>
constexpr bool std::is_literal_type_v
template<typename _Tp>
constexpr bool std::is_empty_v
template<typename _Tp>
constexpr bool std::is_polymorphic_v
template<typename _Tp>
constexpr bool std::is_abstract_v
template<typename _Tp>
constexpr bool std::is_final_v
template<typename _Tp>
constexpr bool std::is_signed_v
template<typename _Tp>
constexpr bool std::is_unsigned_v
template<typename _Tp, typename... _Args>
constexpr bool std::is_constructible_v
template<typename _Tp>
constexpr bool std::is_default_constructible_v
template<typename _Tp>
constexpr bool std::is_copy_constructible_v
template<typename _Tp>
constexpr bool std::is_move_constructible_v
template<typename _Tp, typename _Up>
constexpr bool std::is_assignable_v
template<typename _Tp>
constexpr bool std::is_copy_assignable_v
template<typename _Tp>
constexpr bool std::is_move_assignable_v
template<typename _Tp>
constexpr bool std::is_destructible_v
template<typename _Tp, typename... _Args>
constexpr bool std::is_trivially_constructible_v
template<typename _Tp>
constexpr bool std::is_trivially_default_constructible_v
template<typename _Tp>
constexpr bool std::is_trivially_copy_constructible_v
template<typename _Tp>
constexpr bool std::is_trivially_move_constructible_v
template<typename _Tp, typename _Up>
constexpr bool std::is_trivially_assignable_v
template<typename _Tp>
constexpr bool std::is_trivially_copy_assignable_v
template<typename _Tp>
constexpr bool std::is_trivially_move_assignable_v
template<typename _Tp>
constexpr bool std::is_trivially_destructible_v
template<typename _Tp, typename... _Args>
constexpr bool std::is_nothrow_constructible_v
template<typename _Tp>
constexpr bool std::is_nothrow_default_constructible_v
template<typename _Tp>
constexpr bool std::is_nothrow_copy_constructible_v
template<typename _Tp>
constexpr bool std::is_nothrow_move_constructible_v
template<typename _Tp, typename _Up>
constexpr bool std::is_nothrow_assignable_v
template<typename _Tp>
constexpr bool std::is_nothrow_copy_assignable_v
template<typename _Tp>
constexpr bool std::is_nothrow_move_assignable_v
template<typename _Tp>
constexpr bool std::is_nothrow_destructible_v
template<typename _Tp>
constexpr bool std::has_virtual_destructor_v
template<typename _Tp>
constexpr size_t std::alignment_of_v
template<typename _Tp>
constexpr size_t std::rank_v
template<typename _Tp, size_t _Size>
constexpr size_t std::rank_v< _Tp[_Size]>
template<typename _Tp>
constexpr size_t std::rank_v< _Tp[]>
template<typename _Tp, unsigned _Idx = 0>
constexpr size_t std::extent_v
template<typename _Tp, size_t _Size>
constexpr size_t std::extent_v< _Tp[_Size], 0 >
template<typename _Tp, unsigned _Idx, size_t _Size>
constexpr size_t std::extent_v< _Tp[_Size], _Idx >
template<typename _Tp>
constexpr size_t std::extent_v< _Tp[], 0 >
template<typename _Tp, unsigned _Idx>
constexpr size_t std::extent_v< _Tp[], _Idx >
template<typename _Tp, typename _Up>
constexpr bool std::is_same_v
template<typename _Tp>
constexpr bool std::is_same_v< _Tp, _Tp >
template<typename _Base, typename _Derived>
constexpr bool std::is_base_of_v
template<typename _From, typename _To>
constexpr bool std::is_convertible_v
template<typename _Fn, typename... _Args>
constexpr bool std::is_invocable_v
template<typename _Fn, typename... _Args>
constexpr bool std::is_nothrow_invocable_v
template<typename _Ret, typename _Fn, typename... _Args>
constexpr bool std::is_invocable_r_v
template<typename _Ret, typename _Fn, typename... _Args>
constexpr bool std::is_nothrow_invocable_r_v

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

Macro Definition Documentation

◆ __cpp_lib_bool_constant

#define __cpp_lib_bool_constant

Definition at line 94 of file type_traits.

◆ __cpp_lib_bounded_array_traits

#define __cpp_lib_bounded_array_traits

Definition at line 3491 of file type_traits.

◆ __cpp_lib_has_unique_object_representations

#define __cpp_lib_has_unique_object_representations

Definition at line 3385 of file type_traits.

◆ __cpp_lib_is_aggregate

#define __cpp_lib_is_aggregate

Definition at line 3405 of file type_traits.

◆ __cpp_lib_is_constant_evaluated

#define __cpp_lib_is_constant_evaluated

Definition at line 3646 of file type_traits.

◆ __cpp_lib_is_final

#define __cpp_lib_is_final

Definition at line 852 of file type_traits.

◆ __cpp_lib_is_invocable

#define __cpp_lib_is_invocable

Definition at line 3059 of file type_traits.

◆ __cpp_lib_is_layout_compatible

#define __cpp_lib_is_layout_compatible

Definition at line 3540 of file type_traits.

◆ __cpp_lib_is_nothrow_convertible

#define __cpp_lib_is_nothrow_convertible

Definition at line 1461 of file type_traits.

◆ __cpp_lib_is_null_pointer

#define __cpp_lib_is_null_pointer

Definition at line 608 of file type_traits.

◆ __cpp_lib_is_pointer_interconvertible

#define __cpp_lib_is_pointer_interconvertible

Definition at line 3565 of file type_traits.

◆ __cpp_lib_is_swappable

#define __cpp_lib_is_swappable

Definition at line 2790 of file type_traits.

◆ __cpp_lib_logical_traits

#define __cpp_lib_logical_traits

Definition at line 213 of file type_traits.

◆ __cpp_lib_remove_cvref

#define __cpp_lib_remove_cvref
  • Remove references and cv-qualifiers.
    Since
    C++20

Definition at line 3428 of file type_traits.

◆ __cpp_lib_result_of_sfinae

#define __cpp_lib_result_of_sfinae

Definition at line 2397 of file type_traits.

◆ __cpp_lib_transformation_trait_aliases

#define __cpp_lib_transformation_trait_aliases

Definition at line 1577 of file type_traits.

◆ __cpp_lib_type_identity

#define __cpp_lib_type_identity
  • Identity metafunction.
    Since
    C++20

Definition at line 3456 of file type_traits.

◆ __cpp_lib_type_trait_variable_templates

#define __cpp_lib_type_trait_variable_templates

Definition at line 3142 of file type_traits.

◆ __cpp_lib_unwrap_ref

#define __cpp_lib_unwrap_ref

Definition at line 3464 of file type_traits.

◆ __cpp_lib_void_t

#define __cpp_lib_void_t

Definition at line 2632 of file type_traits.

Typedef Documentation

◆ __conditional_t

template<bool _Cond, typename _If, typename _Else>
using std::__conditional_t

Definition at line 134 of file type_traits.

◆ __enable_if_t

template<bool _Cond, typename _Tp = void>
using std::__enable_if_t

Definition at line 116 of file type_traits.

◆ __is_array_convertible

template<typename _ToElementType, typename _FromElementType>
using std::__is_array_convertible

Definition at line 1458 of file type_traits.

◆ add_const_t

template<typename _Tp>
using std::add_const_t

Alias template for add_const.

Definition at line 1593 of file type_traits.

◆ add_cv_t

template<typename _Tp>
using std::add_cv_t

Alias template for add_cv.

Definition at line 1601 of file type_traits.

◆ add_lvalue_reference_t

template<typename _Tp>
using std::add_lvalue_reference_t

Alias template for add_lvalue_reference.

Definition at line 1642 of file type_traits.

◆ add_pointer_t

template<typename _Tp>
using std::add_pointer_t

Alias template for add_pointer.

Definition at line 2067 of file type_traits.

◆ add_rvalue_reference_t

template<typename _Tp>
using std::add_rvalue_reference_t

Alias template for add_rvalue_reference.

Definition at line 1646 of file type_traits.

◆ add_volatile_t

template<typename _Tp>
using std::add_volatile_t

Alias template for add_volatile.

Definition at line 1597 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

Alias template for aligned_storage.

Definition at line 2600 of file type_traits.

◆ aligned_union_t

template<size_t _Len, typename... _Types>
using std::aligned_union_t

Definition at line 2603 of file type_traits.

◆ bool_constant

template<bool __v>
using std::bool_constant

Alias template for compile-time boolean constant types.

Since
C++17

Definition at line 98 of file type_traits.

◆ common_reference_t

template<typename... _Tp>
using std::common_reference_t

Definition at line 3747 of file type_traits.

◆ common_type_t

template<typename... _Tp>
using std::common_type_t

Alias template for common_type.

Definition at line 2620 of file type_traits.

◆ conditional_t

template<bool _Cond, typename _Iftrue, typename _Iffalse>
using std::conditional_t

Alias template for conditional.

Definition at line 2616 of file type_traits.

◆ decay_t

template<typename _Tp>
using std::decay_t

Alias template for decay.

Definition at line 2608 of file type_traits.

◆ enable_if_t

template<bool _Cond, typename _Tp = void>
using std::enable_if_t

Alias template for enable_if.

Definition at line 2612 of file type_traits.

◆ false_type

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

Definition at line 85 of file type_traits.

◆ invoke_result_t

template<typename _Fn, typename... _Args>
using std::invoke_result_t

std::invoke_result_t

Definition at line 3075 of file type_traits.

◆ make_signed_t

template<typename _Tp>
using std::make_signed_t

Alias template for make_signed.

Definition at line 1977 of file type_traits.

◆ make_unsigned_t

template<typename _Tp>
using std::make_unsigned_t

Alias template for make_unsigned.

Definition at line 1981 of file type_traits.

◆ remove_all_extents_t

template<typename _Tp>
using std::remove_all_extents_t

Alias template for remove_all_extents.

Definition at line 2019 of file type_traits.

◆ remove_const_t

template<typename _Tp>
using std::remove_const_t

Alias template for remove_const.

Definition at line 1581 of file type_traits.

◆ remove_cv_t

template<typename _Tp>
using std::remove_cv_t

Alias template for remove_cv.

Definition at line 1589 of file type_traits.

◆ remove_cvref_t

template<typename _Tp>
using std::remove_cvref_t
  • Remove references and cv-qualifiers.
    Since
    C++20

Definition at line 3449 of file type_traits.

◆ remove_extent_t

template<typename _Tp>
using std::remove_extent_t

Alias template for remove_extent.

Definition at line 2015 of file type_traits.

◆ remove_pointer_t

template<typename _Tp>
using std::remove_pointer_t

Alias template for remove_pointer.

Definition at line 2063 of file type_traits.

◆ remove_reference_t

template<typename _Tp>
using std::remove_reference_t

Alias template for remove_reference.

Definition at line 1638 of file type_traits.

◆ remove_volatile_t

template<typename _Tp>
using std::remove_volatile_t

Alias template for remove_volatile.

Definition at line 1585 of file type_traits.

◆ result_of_t

template<typename _Tp>
using std::result_of_t

Alias template for result_of.

Definition at line 2628 of file type_traits.

◆ true_type

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

Definition at line 82 of file type_traits.

◆ type_identity_t

template<typename _Tp>
using std::type_identity_t
  • Identity metafunction.
    Since
    C++20

Definition at line 3461 of file type_traits.

◆ underlying_type_t

template<typename _Tp>
using std::underlying_type_t

Alias template for underlying_type.

Definition at line 2624 of file type_traits.

◆ unwrap_ref_decay_t

template<typename _Tp>
using std::unwrap_ref_decay_t

Definition at line 3488 of file type_traits.

◆ unwrap_reference_t

template<typename _Tp>
using std::unwrap_reference_t

Definition at line 3477 of file type_traits.

◆ void_t

template<typename...>
using std::void_t

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

Definition at line 2634 of file type_traits.

Function Documentation

◆ is_constant_evaluated()

bool std::is_constant_evaluated ( )
inlineconstexprnoexcept

Returns true only when called during constant evaluation.

Since
C++20

Definition at line 3651 of file type_traits.

Referenced by assume_aligned().

◆ is_corresponding_member()

template<typename _S1, typename _S2, typename _M1, typename _M2>
bool std::is_corresponding_member ( _M1 _S1::* __m1,
_M2 _S2::* __m2 )
constexprnoexcept
Since
C++20

Definition at line 3545 of file type_traits.

◆ is_pointer_interconvertible_with_class()

template<typename _Tp, typename _Mem>
bool std::is_pointer_interconvertible_with_class ( _Mem _Tp::* __mp)
constexprnoexcept

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

◆ swap() [1/2]

template<typename _Tp>
_Require< __not_< __is_tuple_like< _Tp > >, is_move_constructible< _Tp >, is_move_assignable< _Tp > > std::swap ( _Tp & __a,
_Tp & __b )
inlineconstexprnoexcept

Swaps two values.

Parameters
__aA thing of arbitrary type.
__bAnother thing of arbitrary type.
Returns
Nothing.

Definition at line 189 of file move.h.

◆ swap() [2/2]

template<typename _Tp, size_t _Nm>
__enable_if_t< __is_swappable< _Tp >::value > std::swap ( _Tp(&) __a[_Nm],
_Tp(&) __b[_Nm] )
inlineconstexprnoexcept

Swap the contents of two arrays.

Definition at line 213 of file move.h.

References swap().

Variable Documentation

◆ aligned_union< _Len, _Types... >::alignment_value

template<size_t _Len, typename... _Types>
const size_t std::aligned_union< _Len, _Types... >::alignment_value

Definition at line 2158 of file type_traits.

◆ alignment_of_v

template<typename _Tp>
size_t std::alignment_of_v
inlineconstexpr

Definition at line 3333 of file type_traits.

◆ disjunction_v

template<typename... _Bn>
bool std::disjunction_v
inlineconstexpr

Definition at line 247 of file type_traits.

◆ extent_v

template<typename _Tp, unsigned _Idx = 0>
size_t std::extent_v
inlineconstexpr

Definition at line 3343 of file type_traits.

◆ extent_v< _Tp[], 0 >

template<typename _Tp>
size_t std::extent_v< _Tp[], 0 >
inlineconstexpr

Definition at line 3349 of file type_traits.

◆ extent_v< _Tp[], _Idx >

template<typename _Tp, unsigned _Idx>
size_t std::extent_v< _Tp[], _Idx >
inlineconstexpr

Definition at line 3351 of file type_traits.

◆ extent_v< _Tp[_Size], 0 >

template<typename _Tp, size_t _Size>
size_t std::extent_v< _Tp[_Size], 0 >
inlineconstexpr

Definition at line 3345 of file type_traits.

◆ extent_v< _Tp[_Size], _Idx >

template<typename _Tp, unsigned _Idx, size_t _Size>
size_t std::extent_v< _Tp[_Size], _Idx >
inlineconstexpr

Definition at line 3347 of file type_traits.

◆ has_virtual_destructor_v

template<typename _Tp>
bool std::has_virtual_destructor_v
inlineconstexpr

Definition at line 3329 of file type_traits.

◆ is_abstract_v

template<typename _Tp>
bool std::is_abstract_v
inlineconstexpr

Definition at line 3241 of file type_traits.

◆ is_arithmetic_v

template<typename _Tp>
bool std::is_arithmetic_v
inlineconstexpr

Definition at line 3204 of file type_traits.

◆ is_array_v

template<typename _Tp>
bool std::is_array_v
inlineconstexpr

Definition at line 3167 of file type_traits.

◆ is_array_v< _Tp[]>

template<typename _Tp>
bool std::is_array_v< _Tp[]>
inlineconstexpr

Definition at line 3169 of file type_traits.

◆ is_array_v< _Tp[_Num]>

template<typename _Tp, size_t _Num>
bool std::is_array_v< _Tp[_Num]>
inlineconstexpr

Definition at line 3171 of file type_traits.

◆ is_assignable_v

template<typename _Tp, typename _Up>
bool std::is_assignable_v
inlineconstexpr

Definition at line 3262 of file type_traits.

◆ is_base_of_v

template<typename _Base, typename _Derived>
bool std::is_base_of_v
inlineconstexpr

Definition at line 3363 of file type_traits.

◆ is_bounded_array_v< _Tp[_Size]>

template<typename _Tp, size_t _Size>
bool std::is_bounded_array_v< _Tp[_Size]>
inlineconstexpr

Definition at line 3500 of file type_traits.

◆ is_class_v

template<typename _Tp>
bool std::is_class_v
inlineconstexpr

Definition at line 3194 of file type_traits.

◆ is_compound_v

template<typename _Tp>
bool std::is_compound_v
inlineconstexpr

Definition at line 3212 of file type_traits.

◆ is_const_v

template<typename _Tp>
bool std::is_const_v
inlineconstexpr

Definition at line 3216 of file type_traits.

◆ is_const_v< const _Tp >

template<typename _Tp>
bool std::is_const_v< const _Tp >
inlineconstexpr

Definition at line 3218 of file type_traits.

◆ is_constructible_v

template<typename _Tp, typename... _Args>
bool std::is_constructible_v
inlineconstexpr

Definition at line 3251 of file type_traits.

◆ is_convertible_v

template<typename _From, typename _To>
bool std::is_convertible_v
inlineconstexpr

Definition at line 3366 of file type_traits.

◆ is_copy_assignable_v

template<typename _Tp>
bool std::is_copy_assignable_v
inlineconstexpr

Definition at line 3264 of file type_traits.

◆ is_copy_constructible_v

template<typename _Tp>
bool std::is_copy_constructible_v
inlineconstexpr

Definition at line 3255 of file type_traits.

◆ is_default_constructible_v

template<typename _Tp>
bool std::is_default_constructible_v
inlineconstexpr

Definition at line 3253 of file type_traits.

◆ is_destructible_v

template<typename _Tp>
bool std::is_destructible_v
inlineconstexpr

Definition at line 3271 of file type_traits.

◆ is_empty_v

template<typename _Tp>
bool std::is_empty_v
inlineconstexpr

Definition at line 3237 of file type_traits.

◆ is_enum_v

template<typename _Tp>
bool std::is_enum_v
inlineconstexpr

Definition at line 3190 of file type_traits.

◆ is_final_v

template<typename _Tp>
bool std::is_final_v
inlineconstexpr

Definition at line 3243 of file type_traits.

◆ is_floating_point_v

template<typename _Tp>
bool std::is_floating_point_v
inlineconstexpr

Definition at line 3164 of file type_traits.

◆ is_function_v

template<typename _Tp>
bool std::is_function_v
inlineconstexpr

Definition at line 3196 of file type_traits.

◆ is_fundamental_v

template<typename _Tp>
bool std::is_fundamental_v
inlineconstexpr

Definition at line 3206 of file type_traits.

◆ is_integral_v

template<typename _Tp>
bool std::is_integral_v
inlineconstexpr

Definition at line 3162 of file type_traits.

◆ is_invocable_r_v

template<typename _Ret, typename _Fn, typename... _Args>
bool std::is_invocable_r_v
inlineconstexpr

Definition at line 3377 of file type_traits.

◆ is_invocable_v

template<typename _Fn, typename... _Args>
bool std::is_invocable_v
inlineconstexpr

Definition at line 3372 of file type_traits.

◆ is_literal_type_v

template<typename _Tp>
bool std::is_literal_type_v
inlineconstexpr

Definition at line 3235 of file type_traits.

◆ is_lvalue_reference_v

template<typename _Tp>
bool std::is_lvalue_reference_v
inlineconstexpr

Definition at line 3176 of file type_traits.

◆ is_lvalue_reference_v< _Tp & >

template<typename _Tp>
bool std::is_lvalue_reference_v< _Tp & >
inlineconstexpr

Definition at line 3178 of file type_traits.

◆ is_member_function_pointer_v

template<typename _Tp>
bool std::is_member_function_pointer_v
inlineconstexpr

Definition at line 3187 of file type_traits.

◆ is_member_object_pointer_v

template<typename _Tp>
bool std::is_member_object_pointer_v
inlineconstexpr

Definition at line 3184 of file type_traits.

◆ is_member_pointer_v

template<typename _Tp>
bool std::is_member_pointer_v
inlineconstexpr

Definition at line 3214 of file type_traits.

◆ is_move_assignable_v

template<typename _Tp>
bool std::is_move_assignable_v
inlineconstexpr

Definition at line 3267 of file type_traits.

◆ is_move_constructible_v

template<typename _Tp>
bool std::is_move_constructible_v
inlineconstexpr

Definition at line 3258 of file type_traits.

◆ is_nothrow_assignable_v

template<typename _Tp, typename _Up>
bool std::is_nothrow_assignable_v
inlineconstexpr

Definition at line 3314 of file type_traits.

◆ is_nothrow_constructible_v

template<typename _Tp, typename... _Args>
bool std::is_nothrow_constructible_v
inlineconstexpr

Definition at line 3301 of file type_traits.

◆ is_nothrow_convertible_v

template<typename _From, typename _To>
bool std::is_nothrow_convertible_v
inlineconstexpr

is_nothrow_convertible_v

Definition at line 1466 of file type_traits.

◆ is_nothrow_copy_assignable_v

template<typename _Tp>
bool std::is_nothrow_copy_assignable_v
inlineconstexpr

Definition at line 3317 of file type_traits.

◆ is_nothrow_copy_constructible_v

template<typename _Tp>
bool std::is_nothrow_copy_constructible_v
inlineconstexpr

Definition at line 3307 of file type_traits.

◆ is_nothrow_default_constructible_v

template<typename _Tp>
bool std::is_nothrow_default_constructible_v
inlineconstexpr

Definition at line 3304 of file type_traits.

◆ is_nothrow_destructible_v

template<typename _Tp>
bool std::is_nothrow_destructible_v
inlineconstexpr

Definition at line 3325 of file type_traits.

◆ is_nothrow_invocable_r_v

template<typename _Ret, typename _Fn, typename... _Args>
bool std::is_nothrow_invocable_r_v
inlineconstexpr

Definition at line 3380 of file type_traits.

◆ is_nothrow_invocable_v

template<typename _Fn, typename... _Args>
bool std::is_nothrow_invocable_v
inlineconstexpr

Definition at line 3374 of file type_traits.

◆ is_nothrow_move_assignable_v

template<typename _Tp>
bool std::is_nothrow_move_assignable_v
inlineconstexpr

Definition at line 3321 of file type_traits.

◆ is_nothrow_move_constructible_v

template<typename _Tp>
bool std::is_nothrow_move_constructible_v
inlineconstexpr

Definition at line 3310 of file type_traits.

◆ is_nothrow_swappable_v

template<typename _Tp>
bool std::is_nothrow_swappable_v
inlineconstexpr

is_nothrow_swappable_v

Definition at line 2819 of file type_traits.

◆ is_nothrow_swappable_with_v

template<typename _Tp, typename _Up>
bool std::is_nothrow_swappable_with_v
inlineconstexpr

is_nothrow_swappable_with_v

Definition at line 2915 of file type_traits.

◆ is_null_pointer_v

template<typename _Tp>
bool std::is_null_pointer_v
inlineconstexpr

Definition at line 3160 of file type_traits.

◆ is_object_v

template<typename _Tp>
bool std::is_object_v
inlineconstexpr

Definition at line 3208 of file type_traits.

◆ is_pod_v

template<typename _Tp>
bool std::is_pod_v
inlineconstexpr

Definition at line 3232 of file type_traits.

◆ is_pointer_v

template<typename _Tp>
bool std::is_pointer_v
inlineconstexpr

Definition at line 3174 of file type_traits.

◆ is_polymorphic_v

template<typename _Tp>
bool std::is_polymorphic_v
inlineconstexpr

Definition at line 3239 of file type_traits.

◆ is_reference_v

template<typename _Tp>
bool std::is_reference_v
inlineconstexpr

Definition at line 3198 of file type_traits.

◆ is_reference_v< _Tp & >

template<typename _Tp>
bool std::is_reference_v< _Tp & >
inlineconstexpr

Definition at line 3200 of file type_traits.

◆ is_reference_v< _Tp && >

template<typename _Tp>
bool std::is_reference_v< _Tp && >
inlineconstexpr

Definition at line 3202 of file type_traits.

◆ is_rvalue_reference_v

template<typename _Tp>
bool std::is_rvalue_reference_v
inlineconstexpr

Definition at line 3180 of file type_traits.

◆ is_rvalue_reference_v< _Tp && >

template<typename _Tp>
bool std::is_rvalue_reference_v< _Tp && >
inlineconstexpr

Definition at line 3182 of file type_traits.

◆ is_same_v

template<typename _Tp, typename _Up>
bool std::is_same_v
inlineconstexpr

Definition at line 3358 of file type_traits.

◆ is_same_v< _Tp, _Tp >

template<typename _Tp>
bool std::is_same_v< _Tp, _Tp >
inlineconstexpr

Definition at line 3360 of file type_traits.

◆ is_scalar_v

template<typename _Tp>
bool std::is_scalar_v
inlineconstexpr

Definition at line 3210 of file type_traits.

◆ is_signed_v

template<typename _Tp>
bool std::is_signed_v
inlineconstexpr

Definition at line 3246 of file type_traits.

◆ is_standard_layout_v

template<typename _Tp>
bool std::is_standard_layout_v
inlineconstexpr

Definition at line 3229 of file type_traits.

◆ is_swappable_v

template<typename _Tp>
bool std::is_swappable_v
inlineconstexpr

is_swappable_v

Definition at line 2814 of file type_traits.

◆ is_swappable_with_v

template<typename _Tp, typename _Up>
bool std::is_swappable_with_v
inlineconstexpr

is_swappable_with_v

Definition at line 2910 of file type_traits.

◆ is_trivial_v

template<typename _Tp>
bool std::is_trivial_v
inlineconstexpr

Definition at line 3225 of file type_traits.

◆ is_trivially_assignable_v

template<typename _Tp, typename _Up>
bool std::is_trivially_assignable_v
inlineconstexpr

Definition at line 3287 of file type_traits.

◆ is_trivially_constructible_v

template<typename _Tp, typename... _Args>
bool std::is_trivially_constructible_v
inlineconstexpr

Definition at line 3274 of file type_traits.

◆ is_trivially_copy_assignable_v

template<typename _Tp>
bool std::is_trivially_copy_assignable_v
inlineconstexpr

Definition at line 3290 of file type_traits.

◆ is_trivially_copy_constructible_v

template<typename _Tp>
bool std::is_trivially_copy_constructible_v
inlineconstexpr

Definition at line 3280 of file type_traits.

◆ is_trivially_copyable_v

template<typename _Tp>
bool std::is_trivially_copyable_v
inlineconstexpr

Definition at line 3227 of file type_traits.

◆ is_trivially_default_constructible_v

template<typename _Tp>
bool std::is_trivially_default_constructible_v
inlineconstexpr

Definition at line 3277 of file type_traits.

◆ is_trivially_destructible_v

template<typename _Tp>
bool std::is_trivially_destructible_v
inlineconstexpr

Definition at line 3298 of file type_traits.

◆ is_trivially_move_assignable_v

template<typename _Tp>
bool std::is_trivially_move_assignable_v
inlineconstexpr

Definition at line 3294 of file type_traits.

◆ is_trivially_move_constructible_v

template<typename _Tp>
bool std::is_trivially_move_constructible_v
inlineconstexpr

Definition at line 3283 of file type_traits.

◆ is_unbounded_array_v< _Tp[]>

template<typename _Tp>
bool std::is_unbounded_array_v< _Tp[]>
inlineconstexpr

Definition at line 3509 of file type_traits.

◆ is_union_v

template<typename _Tp>
bool std::is_union_v
inlineconstexpr

Definition at line 3192 of file type_traits.

◆ is_unsigned_v

template<typename _Tp>
bool std::is_unsigned_v
inlineconstexpr

Definition at line 3248 of file type_traits.

◆ is_volatile_v

template<typename _Tp>
bool std::is_volatile_v
inlineconstexpr

Definition at line 3220 of file type_traits.

◆ is_volatile_v< volatile _Tp >

template<typename _Tp>
bool std::is_volatile_v< volatile _Tp >
inlineconstexpr

Definition at line 3222 of file type_traits.

◆ negation_v

template<typename _Pp>
bool std::negation_v
inlineconstexpr

Definition at line 250 of file type_traits.

◆ rank_v

template<typename _Tp>
size_t std::rank_v
inlineconstexpr

Definition at line 3336 of file type_traits.

◆ rank_v< _Tp[]>

template<typename _Tp>
size_t std::rank_v< _Tp[]>
inlineconstexpr

Definition at line 3340 of file type_traits.

◆ rank_v< _Tp[_Size]>

template<typename _Tp, size_t _Size>
size_t std::rank_v< _Tp[_Size]>
inlineconstexpr

Definition at line 3338 of file type_traits.