Includes
(C++20)
support
(C++11)
class template
Concepts
Defined in namespace std::meta
(C++26)
specifies a range of reflection values
(concept)
Types
Defined in namespace std::meta
(C++26)
the type of reflection values
(typedef)
(C++26)
exception thrown by reflection functions
(class)
(C++26)
a context for
(class)
(C++26)
data member options including name, alignment, and bit width
(class)
(C++26)
the offset of a member or base class relative to its enclosing class
(class)
(C++26)
constants that identify overloadable operators
(enum)
Functions
Defined in namespace std::meta
Promoting compile-time storage into static storage (C++26)
promotes a compile-time string to static storage, returning a reflection representing the static string
(function template)
(C++26)
promotes compile-time array into static storage, returning a reflection representing the static array
(function template)
(C++26)
promotes compile-time string to static storage, returning a pointer to the first character of the static string
(function template)
(C++26)
promotes compile-time array into static storage, returning a span of the static array
(function template)
(C++26)
promotes compile-time value into static storage, returning a pointer to the static object
(function template)
Operator representations (C++26)
identifies the operator represented by the reflection
(function)
(C++26)(C++26)
converts a meta::operators enumerator to its symbolic name
(function)
Reflection names and locations (C++26)
checks if reflection represents an entity that has an identifier
(function)
(C++26)(C++26)
if the reflected entity has an identifier, obtains its name
(function)
(C++26)(C++26)
obtains a string suitable for identifying the reflected entity
(function)
(C++26)
obtains the source location of the reflected entity
(function)
Reflection queries (C++26)
determines the type of the reflected entity
(function)
(C++26)
obtains a reflection of the object of the reflected variable
(function)
(C++26)
obtains a reflection of the constant value of the reflected entity
(function)
(C++26)(C++26)(C++26)
checks if reflection represents a public, protected, or private member or base class
(function)
(C++26)
checks if reflection represents a virtual member function or virtual base class
(function)
(C++26)
checks if reflection represents a pure virtual member function
(function)
(C++26)
checks if reflection represents a member function that overrides another member function
(function)
(C++26)
checks if reflection represents a final class or final member function
(function)
(C++26)
checks if reflection represents a deleted function
(function)
(C++26)
checks if reflection represents a defaulted function
(function)
(C++26)
checks if reflection represents a user-provided function
(function)
(C++26)
checks if reflection represents a user-declared function
(function)
(C++26)
checks if reflection represents a member function that is declared
(function)
(C++26)
checks if reflection represents a
function or function type
(function)
(C++26)
checks if reflection represents a
or a
of bit-field
(function)
(C++26)
checks if reflection represents an
(function)
(C++26)
checks if reflection represents an
(function)
(C++26)
checks if reflection represents a const type or a function type with const qualifier
(function)
(C++26)
checks if reflection represents a volatile type or a function type with volatile qualifier
(function)
(C++26)
checks if reflection represents a mutable non-static data member
(function)
(C++26)(C++26)
checks if the reflected entity is a
member function
(function)
(C++26)(C++26)(C++26)
checks if the reflected entity has a
(function)
(C++26)(C++26)(C++26)(C++26)
checks if the reflected entity has a
(function)
(C++26)
checks if the reflected entity has "C"
(extern "C")
(function)
(C++26)
checks if reflection represents a complete type
(function)
(C++26)
checks if the reflected type has its list of members completely defined
(function)
(C++26)
checks if reflection represents a variable
(function)
(C++26)
checks if reflection represents a type
(function)
(C++26)
checks if reflection represents a namespace
(function)
(C++26)
checks if reflection represents a type alias
(function)
(C++26)
checks if reflection represents a namespace alias
(function)
(C++26)
checks if reflection represents a function
(function)
(C++26)
checks if reflection represents a
(function)
(C++26)
checks if reflection represents an
(function)
(C++26)
checks if reflection represents a
operator
(function)
(C++26)
checks if reflection represents a
(function)
(C++26)(C++26)(C++26)(C++26)
checks if the reflected entity is a constructor of this kind
(function)
(C++26)(C++26)(C++26)
checks if the reflected entity is an assignment operator of this kind
(function)
(C++26)
checks if the reflected entity is a destructor
(function)
(C++26)
checks if reflection represents a function parameter
(function)
(C++26)
checks if reflection represents an explicit object parameter
(function)
(C++26)
checks if reflected function parameter has a default argument
(function)
(C++26)
checks if reflection represents a function or function type with an
(function)
(C++26)
checks if reflected entity is a template
(function)
(C++26)
checks if reflected entity is a function template
(function)
(C++26)
checks if reflected entity is a variable template
(function)
(C++26)
checks if reflected entity is a class template
(function)
(C++26)
checks if reflected entity is a alias template
(function)
(C++26)
checks if reflected entity is a conversion function template
(function)
(C++26)
checks if reflected entity is an operator function template
(function)
(C++26)
checks if reflected entity is a literal operator template
(function)
(C++26)
checks if reflected entity is a constructor template
(function)
(C++26)
checks if reflection represents a concept
(function)
(C++26)
checks if reflection represents a (scalar) value
(function)
(C++26)
checks if reflection represents a static object
(function)
(C++26)
checks if reflection represents a structured binding
(function)
(C++26)
checks if reflection represents a class member
(function)
(C++26)
checks if reflection represents a namespace member
(function)
(C++26)
checks if reflection represents a non-static data member
(function)
(C++26)
checks if reflection represents a static class member
(function)
(C++26)
checks if reflection represents a
direct base class relationship
(function)
(C++26)
checks if reflected non-static data member has a default member initializer
(function)
(C++26)
checks if the reflected entity is contained in a scope
(function)
(C++26)
obtains the scope that contains the reflected entity
(function)
(C++26)
determines the underlying entity of the reflected type/namespace alias
(function)
(C++26)
checks if reflected entity is produced by substituting template arguments into a template
(function)
(C++26)
determines the template used to instantiate the reflected entity
(function)
(C++26)
obtains the template arguments of the reflected entity
(function)
(C++26)
obtains the parameters of the reflected function
(function)
(C++26)
obtains the variable of the reflected function parameter in the function definition
(function)
(C++26)
obtains the return type of the reflected function
(function)
Accessibility queries (C++26)
checks if a member is accessible in a given context
(function)
(C++26)
checks if the reflected class has any inaccessible non-static data members
(function)
(C++26)
checks if the reflected class has any inaccessible direct base classes
(function)
(C++26)
checks if the reflected class has any inaccessible non-static data members or direct base classes
(function)
Scope identification (C++26)
returns a reflection of the enclosing function
(function)
(C++26)
returns a reflection of the enclosing class
(function)
(C++26)
returns a reflection of the enclosing namespace
(function)
Reflection member queries (C++26)
obtains the accessible direct members of the reflected class or namespace
(function)
(C++26)
obtains the accessible direct bases of the reflected class
(function)
(C++26)
obtains the accessible static data members of the reflected class
(function)
(C++26)
obtains the accessible non-static data members of the reflected class
(function)
(C++26)
obtains the accessible base class subobjects and non-static data members of the reflected class
(function)
(C++26)
obtains the enumerators of the reflected enum type
(function)
Reflection layout queries (C++26)
returns the offset of a (member or base) subobject relative to its enclosing class
(function)
(C++26)
returns the size in bytes of the reflected object or type
(function)
(C++26)
returns the alignment of the reflected object or type
(function)
(C++26)
returns the size in bits of the reflected object or type
(function)
Annotation reflection (C++26)
obtains the annotations applying to the reflected entity
(function)
(C++26)
obtains the annotations that apply to the reflected entity and have the specified type
(function)
(C++26)
extracts the value of the reflected entity
(function template)
Reflection substitution (C++26)
checks whether the reflected arguments can be substituted in the reflected template
(function template)
(C++26)
substitutes reflected arguments in the reflected template
(function template)
Expression result reflection (C++26)
returns a reflection representing a value or
, suitable for use as a constant template argument
(function template)
(C++26)
returns a reflection representing an object, suitable for use as a constant template argument
(function template)
(C++26)
returns a reflection representing a function, suitable for use as a constant template argument
(function template)
Class definition generation (C++26)
creates a data member description for use with injected declarations
(function)
(C++26)
checks if reflection represents a data member description
(function)
(C++26)
defines an aggregate type from a sequence of data member descriptions
(function template)
Primary type categories (C++26)
checks if reflected type is void
(function)
(C++26)
checks if reflected type is
(function)
(C++26)
checks if reflected type is an integral type
(function)
(C++26)
checks if reflected type is a floating-point type
(function)
(C++26)
checks if reflected type is an array type
(function)
(C++26)
checks if reflected type is a pointer type
(function)
(C++26)
checks if reflection represents an lvalue reference
(function)
(C++26)
checks if reflection represents an rvalue reference
(function)
(C++26)
checks if reflection represents a member object pointer type
(function)
(C++26)
checks if reflection represents a member function pointer type
(function)
(C++26)
checks if reflected type is an enumeration type
(function)
(C++26)
checks if reflected type is a union type
(function)
(C++26)
checks if reflected type is a non-union class type
(function)
(C++26)
checks if reflected type is a function type
(function)
(C++26)
checks if reflected type is std::meta::info
(function)
Composite type categories (C++26)
checks if reflection represents either an lvalue reference or rvalue reference
(function)
(C++26)
checks if reflection represents an arithmetic type
(function)
(C++26)
checks if reflection represents a fundamental type
(function)
(C++26)
checks if reflected type is an object type
(function)
(C++26)
checks if reflected type is a scalar type
(function)
(C++26)
checks if reflected type is a compound type
(function)
(C++26)
checks if reflection represents a member pointer type
(function)
Type properties (C++26)
checks if reflection represents a const-qualified type
(function)
(C++26)
checks if reflection represents a volatile-qualified type
(function)
(C++26)
checks if reflection represents a trivially copyable type
(function)
(C++26)
checks if reflected type is a
type
(function)
(C++26)
checks if reflected type is a class (but not union) type and has no non-static data members
(function)
(C++26)
checks if reflected type is a polymorphic class type
(function)
(C++26)
checks if reflected type is an abstract class type
(function)
(C++26)
checks if reflected type is a final class type
(function)
(C++26)
checks if reflected type is an aggregate type
(function)
(C++26)
checks if reflected type is a structural type
(function)
(C++26)
checks if reflection represents a signed arithmetic type
(function)
(C++26)
checks if reflection represents an unsigned arithmetic type
(function)
(C++26)
checks if reflection represents an array type of known bound
(function)
(C++26)
checks if reflection represents an array type of unknown bound
(function)
(C++26)
checks if reflection represents a scoped enumeration type
(function)
(C++26)(C++26)(C++26)
checks if reflected type has a constructor for specific arguments
(function template)
(C++26)(C++26)(C++26)
checks if reflected type has a default constructor
(function)
(C++26)(C++26)(C++26)
checks if reflected type has a copy constructor
(function)
(C++26)(C++26)(C++26)
checks if reflected type can be constructed from an rvalue reference
(function)
(C++26)(C++26)(C++26)
checks if reflected type has an assignment operator for a specific argument
(function)
(C++26)(C++26)(C++26)
checks if reflected type has a copy assignment operator
(function)
(C++26)(C++26)(C++26)
checks if reflected type has a move assignment operator
(function)
(C++26)(C++26)(C++26)(C++26)
checks if objects of one reflected type can be swapped with objects of same or different other reflected type
(function)
(C++26)(C++26)(C++26)
checks if reflected type has a non-deleted destructor
(function)
(C++26)
checks if reflected type is an
(function)
(C++26)
checks if reflected type has a virtual destructor
(function)
(C++26)
checks if every bit in reflected type's object representation contributes to its value
(function)
(C++26)
checks if a reference is bound to a temporary in
(function)
(C++26)
checks if a reference is bound to a temporary in
(function)
Type property queries (C++26)
obtains the number of dimensions of reflected array type
(function)
(C++26)
obtains the size of reflected array type along a specified dimension
(function)
Type relations (C++26)
checks if two reflections represent the same type
(function)
(C++26)
checks if two reflections represent types such that one type is a base of the other type
(function)
(C++26)
checks if two reflections represent types such that one type is a virtual base of the other type
(function)
(C++26)(C++26)
checks if reflected type can be converted to the other type
(function)
(C++26)
checks if two reflected types are
(function)
(C++26)
checks if reflected type is a
base of another type
(function)
(C++26)(C++26)(C++26)(C++26)
checks if the reflected type can be invoked (as if by
) with the given argument types
(function template)
Const-volatile modifications (C++26)(C++26)(C++26)
removes const and/or volatile qualifiers from reflected type
(function)
(C++26)(C++26)(C++26)
adds const and/or volatile qualifiers to reflected type
(function)
Reference modifications (C++26)
removes a reference from reflected type
(function)
(C++26)(C++26)
adds an lvalue or rvalue reference to reflected type
(function)
Sign modifications (C++26)
returns the corresponding signed type for reflected integral type
(function)
(C++26)
returns the corresponding unsigned type for reflected integral type
(function)
Array modifications (C++26)
removes one extent from reflected array type
(function)
(C++26)
removes all extents from reflected array type
(function)
Pointer modifications (C++26)
removes a pointer from reflected type
(function)
(C++26)
adds a pointer to reflected type
(function)
Other transformations (C++26)
combines meta::remove_cv and meta::remove_reference
(function)
(C++26)
applies type transformations as when passing a function argument by value
(function)
(C++26)
determines the common type of a sequence of reflected types
(function template)
(C++26)
determines the common reference type of a sequence of reflected types
(function template)
(C++26)
obtains the underlying integer type for reflected enumeration type
(function)
(C++26)
deduces the result type of invoking a callable object with a set of arguments
(function template)
(C++26)(C++26)
gets a reflected reference type for underlying type of
(function)
(C++26)
returns the size of reflected
type
(function)
(C++26)
obtains a reflection of element types of the
type
(function)
(C++26)(C++26)
checks if the callable object can be invoked (as if by
) with a tuple of arguments
(function)
(C++26)
deduces the result type of invoking a callable object with a tuple of arguments
(function)
(C++26)
returns the size of reflected variant's list of alternatives
(function)
(C++26)
obtains the type of reflected tuple's alternative specified by its index
(function)
(C++26)
performs a
on reflected types
(function)
Checking string literals (C++26)
checks if a pointer points into a string literal
(function)
#include<compare>#include<initializer_list>namespacestd{// checking string literalsconstevalboolis_string_literal(constchar*p);constevalboolis_string_literal(constwchar_t*p);constevalboolis_string_literal(constchar8_t*p);constevalboolis_string_literal(constchar16_t*p);constevalboolis_string_literal(constchar32_t*p);// promoting to static storagenamespacemeta{template<ranges::input_rangeR>constevalinforeflect_constant_string(R&&r);template<ranges::input_rangeR>constevalinforeflect_constant_array(R&&r);}template<ranges::input_rangeR>constevalconstranges::range_value_t<R>*define_static_string(R&&r);template<ranges::input_rangeR>constevalspan<constranges::range_value_t<R>,/* see description */>define_static_array(R&&r);template<classT>constevalconstremove_cvref_t<T>*define_static_object(T&&r);}namespacestd::meta{usinginfo=decltype(^^::);// class exceptionclassexception;// operator representationsenumclassoperators{/* see description */;};usingenumoperators;constevaloperatorsoperator_of(infor);constevalstring_viewsymbol_of(operatorsop);constevalu8string_viewu8symbol_of(operatorsop);// reflection names and locationsconstevalboolhas_identifier(infor);constevalstring_viewidentifier_of(infor);constevalu8string_viewu8identifier_of(infor);constevalstring_viewdisplay_string_of(infor);constevalu8string_viewu8display_string_of(infor);constevalsource_locationsource_location_of(infor);// reflection queriesconstevalinfotype_of(infor);constevalinfoobject_of(infor);constevalinfoconstant_of(infor);constevalboolis_public(infor);constevalboolis_protected(infor);constevalboolis_private(infor);constevalboolis_virtual(infor);constevalboolis_pure_virtual(infor);constevalboolis_override(infor);constevalboolis_final(infor);constevalboolis_deleted(infor);constevalboolis_defaulted(infor);constevalboolis_user_provided(infor);constevalboolis_user_declared(infor);constevalboolis_explicit(infor);constevalboolis_noexcept(infor);constevalboolis_bit_field(infor);constevalboolis_enumerator(infor);constevalboolis_annotation(infor);constevalboolis_const(infor);constevalboolis_volatile(infor);constevalboolis_mutable_member(infor);constevalboolis_lvalue_reference_qualified(infor);constevalboolis_rvalue_reference_qualified(infor);constevalboolhas_static_storage_duration(infor);constevalboolhas_thread_storage_duration(infor);constevalboolhas_automatic_storage_duration(infor);constevalboolhas_internal_linkage(infor);constevalboolhas_module_linkage(infor);constevalboolhas_external_linkage(infor);constevalboolhas_c_language_linkage(infor);constevalboolhas_linkage(infor);constevalboolis_complete_type(infor);constevalboolis_enumerable_type(infor);constevalboolis_variable(infor);constevalboolis_type(infor);constevalboolis_namespace(infor);constevalboolis_type_alias(infor);constevalboolis_namespace_alias(infor);constevalboolis_function(infor);constevalboolis_conversion_function(infor);constevalboolis_operator_function(infor);constevalboolis_literal_operator(infor);constevalboolis_special_member_function(infor);constevalboolis_constructor(infor);constevalboolis_default_constructor(infor);constevalboolis_copy_constructor(infor);constevalboolis_move_constructor(infor);constevalboolis_assignment(infor);constevalboolis_copy_assignment(infor);constevalboolis_move_assignment(infor);constevalboolis_destructor(infor);constevalboolis_function_parameter(infor);constevalboolis_explicit_object_parameter(infor);constevalboolhas_default_argument(infor);constevalboolis_vararg_function(infor);constevalboolis_template(infor);constevalboolis_function_template(infor);constevalboolis_variable_template(infor);constevalboolis_class_template(infor);constevalboolis_alias_template(infor);constevalboolis_conversion_function_template(infor);constevalboolis_operator_function_template(infor);constevalboolis_literal_operator_template(infor);constevalboolis_constructor_template(infor);constevalboolis_concept(infor);constevalboolis_value(infor);constevalboolis_object(infor);constevalboolis_structured_binding(infor);constevalboolis_class_member(infor);constevalboolis_namespace_member(infor);constevalboolis_nonstatic_data_member(infor);constevalboolis_static_member(infor);constevalboolis_base(infor);constevalboolhas_default_member_initializer(infor);constevalboolhas_parent(infor);constevalinfoparent_of(infor);constevalinfodealias(infor);constevalboolhas_template_arguments(infor);constevalinfotemplate_of(infor);constevalvector<info>template_arguments_of(infor);constevalvector<info>parameters_of(infor);constevalinfovariable_of(infor);constevalinforeturn_type_of(infor);// access control contextstructaccess_context;// member accessibility queriesconstevalboolis_accessible(infor,access_contextctx);constevalboolhas_inaccessible_nonstatic_data_members(infor,access_contextctx);constevalboolhas_inaccessible_bases(infor,access_contextctx);constevalboolhas_inaccessible_subobjects(infor,access_contextctx);// scope identificationconstevalinfocurrent_function();constevalinfocurrent_class();constevalinfocurrent_namespace();// reflection member queriesconstevalvector<info>members_of(infor,access_contextctx);constevalvector<info>bases_of(infotype,access_contextctx);constevalvector<info>static_data_members_of(infotype,access_contextctx);constevalvector<info>nonstatic_data_members_of(infotype,access_contextctx);constevalvector<info>subobjects_of(infotype,access_contextctx);constevalvector<info>enumerators_of(infotype_enum);// reflection layout queriesstructmember_offset;constevalmember_offsetoffset_of(infor);constevalsize_tsize_of(infor);constevalsize_talignment_of(infor);constevalsize_tbit_size_of(infor);// annotation reflectionconstevalvector<info>annotations_of(infoitem);constevalvector<info>annotations_of_with_type(infoitem,infotype);// value extractiontemplate<classT>constevalTextract(infor);// reflection substitutiontemplate<classR>conceptreflection_range=/* see description */;template<reflection_rangeR=initializer_list<info>>constevalboolcan_substitute(infotempl,R&&arguments);template<reflection_rangeR=initializer_list<info>>constevalinfosubstitute(infotempl,R&&arguments);// expression result reflectiontemplate<classT>constevalinforeflect_constant(Texpr);template<classT>constevalinforeflect_object(T&expr);template<classT>constevalinforeflect_function(T&fn);// class definition generationstructdata_member_options;constevalinfodata_member_spec(infotype,data_member_optionsoptions);constevalboolis_data_member_spec(infor);template<reflection_rangeR=initializer_list<info>>constevalinfodefine_aggregate(infotype_class,R&&mdescrs);// primary type categoriesconstevalboolis_void_type(infotype);constevalboolis_null_pointer_type(infotype);constevalboolis_integral_type(infotype);constevalboolis_floating_point_type(infotype);constevalboolis_array_type(infotype);constevalboolis_pointer_type(infotype);constevalboolis_lvalue_reference_type(infotype);constevalboolis_rvalue_reference_type(infotype);constevalboolis_member_object_pointer_type(infotype);constevalboolis_member_function_pointer_type(infotype);constevalboolis_enum_type(infotype);constevalboolis_union_type(infotype);constevalboolis_class_type(infotype);constevalboolis_function_type(infotype);constevalboolis_reflection_type(infotype);// composite type categoriesconstevalboolis_reference_type(infotype);constevalboolis_arithmetic_type(infotype);constevalboolis_fundamental_type(infotype);constevalboolis_object_type(infotype);constevalboolis_scalar_type(infotype);constevalboolis_compound_type(infotype);constevalboolis_member_pointer_type(infotype);// type propertiesconstevalboolis_const_type(infotype);constevalboolis_volatile_type(infotype);constevalboolis_trivially_copyable_type(infotype);constevalboolis_standard_layout_type(infotype);constevalboolis_empty_type(infotype);constevalboolis_polymorphic_type(infotype);constevalboolis_abstract_type(infotype);constevalboolis_final_type(infotype);constevalboolis_aggregate_type(infotype);constevalboolis_structural_type(infotype);constevalboolis_signed_type(infotype);constevalboolis_unsigned_type(infotype);constevalboolis_bounded_array_type(infotype);constevalboolis_unbounded_array_type(infotype);constevalboolis_scoped_enum_type(infotype);template<reflection_rangeR=initializer_list<info>>constevalboolis_constructible_type(infotype,R&&type_args);constevalboolis_default_constructible_type(infotype);constevalboolis_copy_constructible_type(infotype);constevalboolis_move_constructible_type(infotype);constevalboolis_assignable_type(infotype_dst,infotype_src);constevalboolis_copy_assignable_type(infotype);constevalboolis_move_assignable_type(infotype);constevalboolis_swappable_with_type(infotype1,infotype2);constevalboolis_swappable_type(infotype);constevalboolis_destructible_type(infotype);template<reflection_rangeR=initializer_list<info>>constevalboolis_trivially_constructible_type(infotype,R&&type_args);constevalboolis_trivially_default_constructible_type(infotype);constevalboolis_trivially_copy_constructible_type(infotype);constevalboolis_trivially_move_constructible_type(infotype);constevalboolis_trivially_assignable_type(infotype_dst,infotype_src);constevalboolis_trivially_copy_assignable_type(infotype);constevalboolis_trivially_move_assignable_type(infotype);constevalboolis_trivially_destructible_type(infotype);template<reflection_rangeR=initializer_list<info>>constevalboolis_nothrow_constructible_type(infotype,R&&type_args);constevalboolis_nothrow_default_constructible_type(infotype);constevalboolis_nothrow_copy_constructible_type(infotype);constevalboolis_nothrow_move_constructible_type(infotype);constevalboolis_nothrow_assignable_type(infotype_dst,infotype_src);constevalboolis_nothrow_copy_assignable_type(infotype);constevalboolis_nothrow_move_assignable_type(infotype);constevalboolis_nothrow_swappable_with_type(infotype1,infotype2);constevalboolis_nothrow_swappable_type(infotype);constevalboolis_nothrow_destructible_type(infotype);constevalboolis_implicit_lifetime_type(infotype);constevalboolhas_virtual_destructor(infotype);constevalboolhas_unique_object_representations(infotype);constevalboolreference_constructs_from_temporary(infotype_dst,infotype_src);constevalboolreference_converts_from_temporary(infotype_dst,infotype_src);// type property queriesconstevalsize_trank(infotype);constevalsize_textent(infotype,unsignedi=0);// type relationsconstevalboolis_same_type(infotype1,infotype2);constevalboolis_base_of_type(infotype_base,infotype_derived);constevalboolis_virtual_base_of_type(infotype_base,infotype_derived);constevalboolis_convertible_type(infotype_src,infotype_dst);constevalboolis_nothrow_convertible_type(infotype_src,infotype_dst);constevalboolis_layout_compatible_type(infotype1,infotype2);constevalboolis_pointer_interconvertible_base_of_type(infotype_base,infotype_derived);template<reflection_rangeR=initializer_list<info>>constevalboolis_invocable_type(infotype,R&&type_args);template<reflection_rangeR=initializer_list<info>>constevalboolis_invocable_r_type(infotype_result,infotype,R&&type_args);template<reflection_rangeR=initializer_list<info>>constevalboolis_nothrow_invocable_type(infotype,R&&type_args);template<reflection_rangeR=initializer_list<info>>constevalboolis_nothrow_invocable_r_type(infotype_result,infotype,R&&type_args);// const-volatile modificationsconstevalinforemove_const(infotype);constevalinforemove_volatile(infotype);constevalinforemove_cv(infotype);constevalinfoadd_const(infotype);constevalinfoadd_volatile(infotype);constevalinfoadd_cv(infotype);// reference modificationsconstevalinforemove_reference(infotype);constevalinfoadd_lvalue_reference(infotype);constevalinfoadd_rvalue_reference(infotype);// sign modificationsconstevalinfomake_signed(infotype);constevalinfomake_unsigned(infotype);// array modificationsconstevalinforemove_extent(infotype);constevalinforemove_all_extents(infotype);// pointer modificationsconstevalinforemove_pointer(infotype);constevalinfoadd_pointer(infotype);// other transformationsconstevalinforemove_cvref(infotype);constevalinfodecay(infotype);template<reflection_rangeR=initializer_list<info>>constevalinfocommon_type(R&&type_args);template<reflection_rangeR=initializer_list<info>>constevalinfocommon_reference(R&&type_args);constevalinfounderlying_type(infotype);template<reflection_rangeR=initializer_list<info>>constevalinfoinvoke_result(infotype,R&&type_args);constevalinfounwrap_reference(infotype);constevalinfounwrap_ref_decay(infotype);constevalsize_ttuple_size(infotype);constevalinfotuple_element(size_tindex,infotype);constevalboolis_applicable_type(infofn,infotuple);constevalboolis_nothrow_applicable_type(infofn,infotuple);constevalinfoapply_result(infofn,infotuple);constevalsize_tvariant_size(infotype);constevalinfovariant_alternative(size_tindex,infotype);constevalstrong_orderingtype_order(infotype_a,infotype_b);}namespacestd::meta{classexception:publicstd::exception{private:optional<string>/*what_*/;// exposition-onlyu8string/*u8what_*/;// exposition-onlyinfo/*from_*/;// exposition-onlysource_location/*where_*/;// exposition-onlypublic:constevalexception(u8string_viewwhat,infofrom,source_locationwhere=source_location::current())noexcept;constevalexception(string_viewwhat,infofrom,source_locationwhere=source_location::current())noexcept;exception(constexception&)=default;exception(exception&&)=default;exception&operator=(constexception&)=default;exception&operator=(exception&&)=default;constexprconstchar*what()constnoexceptoverride;constevalu8string_viewu8what()constnoexcept;constevalinfofrom()constnoexcept;constevalsource_locationwhere()constnoexcept;};}namespacestd::meta{structaccess_context{access_context()=delete;constevalinfoscope()const;constevalinfodesignating_class()const;staticconstevalaccess_contextcurrent()noexcept;staticconstevalaccess_contextunprivileged()noexcept;staticconstevalaccess_contextunchecked()noexcept;constevalaccess_contextvia(infocls)const;};}namespacestd::meta{structmember_offset{ptrdiff_tbytes;ptrdiff_tbits;constexprptrdiff_ttotal_bits()const;autooperator<=>(constmember_offset&)const=default;};}namespacestd::meta{structdata_member_options{struct/*name-type*/{// exposition-onlytemplate<classT>requiresconstructible_from<u8string,T>consteval/*name-type*/(T&&);template<classT>requiresconstructible_from<string,T>consteval/*name-type*/(T&&);private:variant<u8string,string>/*contents*/;// exposition-only};optional</*name-type*/>name;optional<int>alignment;optional<int>bit_width;boolno_unique_address=false;vector<info>annotations;};}