Experimental library header <experimental/reflect>
From cppreference.net
<
cpp
|
header
|
experimental
Este encabezado es parte del Reflection TS .
|
Definido en el espacio de nombres
std::experimental::reflect
|
|
|
Definido en el espacio de nombres en línea
std::experimental::reflect::v1
|
|
Conceptos |
|
|
(reflection TS)
|
especifica que un tipo es un tipo meta-objeto
(concept) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto es un tipo de secuencia de meta-objetos
(concepto) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja un ámbito de parámetro de plantilla
(concepto) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja una entidad o alias con un nombre asociado (posiblemente vacío)
(concept) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja un alias de tipo, alias de espacio de nombres, o un alias introducido por una declaración using
(concepto) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja una
member-declaration
de una clase
(concept) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja un enumerador
(concept) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja una variable o miembro de datos
(concept) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto satisface
RecordMember
,
Enumerator
, o
Variable
, o refleja un espacio de nombres distinto del espacio de nombres global
(concepto) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja una entidad con un tipo
(concept) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja un namespace
(concept) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja el espacio de nombres global
(concept) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja un tipo de clase no-union
(concepto) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja un tipo de enumeración
(concept) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja un tipo de clase
(concept) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja un espacio de nombres, clase, enumeración, función, tipo de clausura, o un ámbito de parámetro de plantilla
(concepto) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja un tipo
(concept) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja un enumerador o una variable constexpr
(concept) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja una clase base directa obtenida de
get_base_classes
(concept) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja un parámetro de función
(concepto) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja una función (incluyendo constructores y destructores)
(concept) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja una expresión
(concept) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja una expresión entre paréntesis
(concepto) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja una
function-call-expression
(concepto) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja una
functional-type-conv-expression
(concepto) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja una función (excluyendo constructores y destructores)
(concept) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja una función miembro (excluyendo constructores y destructores)
(concept) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja una función miembro especial
(concepto) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja un constructor
(concept) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja un destructor
(concept) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja una función de operador o una función de conversión
(concepto) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja una función de conversión
(concept) |
|
(reflection TS)
|
especifica que un tipo meta-objeto refleja el tipo de cierre de un lambda no genérico
(concepto) |
|
(reflection TS)
|
especifica que un tipo de meta-objeto refleja una captura lambda
(concepto) |
Clases |
|
|
|
|
(reflection TS)
|
verifica si dos tipos de meta-objeto reflejan la misma entidad o alias
(plantilla de clase) |
|
(reflection TS)
|
obtiene el número de línea presunto de la declaración de la entidad reflejada o alias
(plantilla de clase) |
|
(reflection TS)
|
obtiene el número de columna definido por la implementación de la declaración de la entidad reflejada o alias
(plantilla de clase) |
|
(reflection TS)
|
obtiene el nombre de archivo presunto de la declaración de la entidad reflejada o alias
(class template) |
|
|
|
(reflection TS)
|
obtiene el tamaño de una secuencia de meta-objetos
(plantilla de clase) |
|
(reflection TS)
|
obtiene el tipo de meta-objeto con el índice especificado en una secuencia
(plantilla de clase) |
|
(reflection TS)
|
aplica una plantilla a la secuencia de meta-objetos
(plantilla de clase) |
|
|
|
(reflection TS)
|
verifica si la entidad reflejada o alias tiene nombre
(class template) |
|
(reflection TS)
|
obtiene el nombre no calificado de la entidad reflejada o alias
(plantilla de clase) |
|
(reflection TS)
|
obtiene el nombre de visualización definido por la implementación de la entidad reflejada o alias
(plantilla de clase) |
|
|
|
(reflection TS)
|
obtiene el tipo de meta-objeto que refleja la entidad asociada del alias reflejado
(plantilla de clase) |
|
|
|
(reflection TS)
|
obtiene el tipo de meta-objeto que refleja el tipo de la entidad reflejada o alias
(plantilla de clase) |
|
(reflection TS)
|
obtiene el tipo de la entidad reflejada o alias
(plantilla de clase) |
|
(reflection TS)
|
verifica si el tipo de meta-objeto refleja un tipo de enumeración
(plantilla de clase) |
|
(reflection TS)
|
verifica si el tipo de meta-objeto refleja un tipo unión
(plantilla de clase) |
|
(reflection TS)
|
verifica si el tipo de meta-objeto refleja un tipo de clase no-union cuya declaración utiliza
class
o
struct
respectivamente
(plantilla de clase) |
|
|
|
(reflection TS)
|
obtiene el tipo de meta-objeto que refleja el ámbito de la entidad reflejada o alias
(plantilla de clase) |
|
|
|
(reflection TS)
|
obtiene el tipo de meta-objeto que refleja la clase base en la relación de clase base dada
(plantilla de clase) |
|
|
|
(reflection TS)
|
verifica si el miembro reflejado o clase base es público
(plantilla de clase) |
|
(reflection TS)
|
verifica si el miembro reflejado o clase base está protegido
(class template) |
|
(reflection TS)
|
verifica si el miembro reflejado o clase base es privado
(plantilla de clase) |
|
|
|
obtiene un tipo de secuencia meta-objeto cuyos elementos reflejan los miembros de datos públicos, accesibles o todos los miembros de datos de la clase reflejada
(plantilla de clase) |
|
|
obtiene un tipo de secuencia de meta-objetos cuyos elementos reflejan las funciones miembro públicas, accesibles o todas las funciones miembro de la clase reflejada
(plantilla de clase) |
|
|
(reflection TS)
|
obtiene un tipo de secuencia de meta-objetos cuyos elementos reflejan todos los constructores de la clase reflejada
(plantilla de clase) |
|
(reflection TS)
|
obtiene un tipo de secuencia de meta-objetos cuyos elementos reflejan todas las funciones de operador y funciones de conversión declaradas en la clase reflejada
(plantilla de clase) |
|
(reflection TS)
|
obtiene el tipo de meta-objeto que refleja el destructor de la clase reflejada
(plantilla de clase) |
|
obtiene un tipo de secuencia de meta-objetos cuyos elementos reflejan los tipos anidados públicos, accesibles o todos los typedefs de miembros de la clase reflejada
(plantilla de clase) |
|
|
obtiene un tipo de secuencia de meta-objetos cuyos elementos reflejan las clases base públicas, accesibles o todas las clases base de la clase reflejada
(plantilla de clase) |
|
|
|
|
(reflection TS)
|
verifica si la enumeración reflejada es de ámbito delimitado
(plantilla de clase) |
|
(reflection TS)
|
obtiene un tipo de secuencia de meta-objetos cuyos elementos reflejan los enumeradores de la enumeración reflejada
(plantilla de clase) |
|
(reflection TS)
|
obtiene el tipo de meta-objeto que refleja el tipo subyacente de la enumeración reflejada
(plantilla de clase) |
|
|
|
(reflection TS)
|
obtiene el valor de la variable reflejada que es una expresión constante
(plantilla de clase) |
|
(reflection TS)
|
comprueba si la variable está declarada con
thread_local
(plantilla de clase) |
|
|
|
(reflection TS)
|
verifica si el parámetro reflejado tiene un argumento por defecto
(plantilla de clase) |
|
|
|
(reflection TS)
|
obtiene un tipo de secuencia de meta-objetos cuyos elementos reflejan los parámetros de la función reflejada
(plantilla de clase) |
|
(reflection TS)
|
verifica si la lista de parámetros de la función reflejada contiene un parámetro de elipsis
(plantilla de clase) |
|
(reflection TS)
|
verifica si la función reflejada es no-lanzadora
(plantilla de clase) |
|
(reflection TS)
|
verifica si la función reflejada está eliminada
(plantilla de clase) |
|
|
|
(reflection TS)
|
verifica si la variable o función reflejada es constexpr
(plantilla de clase) |
|
|
|
(reflection TS)
|
verifica si el espacio de nombres o función reflejado es inline
(plantilla de clase) |
|
|
|
(reflection TS)
|
obtiene el tipo de meta-objeto que refleja la expresión sin paréntesis de la expresión parentizada reflejada
(plantilla de clase) |
|
|
|
(reflection TS)
|
obtiene el tipo de meta-objeto que refleja la función en la
function-call-expression
reflejada
(plantilla de clase) |
|
|
|
(reflection TS)
|
obtiene el tipo de meta-objeto que refleja el constructor en la expresión
functional-type-conv-expression
reflejada
(plantilla de clase) |
|
|
|
(reflection TS)
|
obtiene la dirección de la variable o función reflejada, o el valor de puntero-a-miembro para el miembro no estático reflejado
(plantilla de clase) |
|
|
|
verifica si la función miembro reflejada está declarada con
const
,
volatile
,
&
, o
&&
calificador respectivamente
(plantilla de clase) |
|
|
(reflection TS)
|
verifica si la función miembro reflejada anula una función miembro de la clase base
(plantilla de clase) |
|
|
|
(reflection TS)
|
verifica si la clase reflejada o función miembro está marcada con
final
(plantilla de clase) |
|
|
|
(reflection TS)
|
verifica si la variable reflejada tiene duración de almacenamiento estático, o si la función miembro reflejada es estática
(plantilla de clase) |
|
|
|
(reflection TS)
|
verifica si la función miembro especial reflejada está declarada implícitamente
(plantilla de clase) |
|
(reflection TS)
|
verifica si la función miembro especial reflejada está predeterminada en su primera declaración
(plantilla de clase) |
|
|
|
(reflection TS)
|
verifica si el constructor reflejado o la función de conversión está declarado con
explicit
(plantilla de clase) |
|
|
|
(reflection TS)
|
verifica si la función miembro reflejada es virtual
(plantilla de clase) |
|
(reflection TS)
|
verifica si la función miembro reflejada es virtual pura
(plantilla de clase) |
|
|
|
(reflection TS)
|
obtiene un tipo de secuencia de meta-objetos cuyos elementos reflejan las capturas del tipo de clausura reflejado
(plantilla de clase) |
|
(reflection TS)
|
verifica si la captura por defecto de la expresión lambda del tipo de clausura reflejada es
=
o
&
respectivamente
(plantilla de clase) |
|
(reflection TS)
|
verifica si el
operator()
del tipo de clausura reflejado está declarado con
const
(plantilla de clase) |
|
|
|
(reflection TS)
|
verifica si la captura de lambda reflejada está explícitamente capturada
(plantilla de clase) |
|
(reflection TS)
|
verifica si la captura de lambda reflejada es una init-capture
(plantilla de clase) |
Sinopsis
namespace std::experimental::reflect { inline namespace v1 { // 21.12.3 Conceptos para tipos de meta-objetos template <class T> concept Object = /* ver descripción */; template <class T> concept ObjectSequence = /* ver descripción */; // refina Object template <class T> concept TemplateParameterScope = /* ver descripción */; // refina Scope template <class T> concept Named = /* ver descripción */; // refina Object template <class T> concept Alias = /* ver descripción */; // refina Named y ScopeMember template <class T> concept RecordMember = /* ver descripción */; // refina ScopeMember template <class T> concept Enumerator = /* ver descripción */; // refina Constant template <class T> concept Variable = /* ver descripción */; // refina Typed y ScopeMember template <class T> concept ScopeMember = /* ver descripción */; // refina Named template <class T> concept Typed = /* ver descripción */; // refina Object template <class T> concept Namespace = /* ver descripción */; // refina Named y Scope template <class T> concept GlobalScope = /* ver descripción */; // refines Namespace template <class T> concept Class = /* ver descripción */; // refina Record template <class T> concept Enum = /* ver descripción */; // refina Type, Scope, y ScopeMember template <class T> concept Record = /* ver descripción */; // refina Type, Scope, y ScopeMember template <class T> concept Scope = /* ver descripción */; // refina Object template <class T> concept Type = /* ver descripción */; // refina Named template <class T> concept Constant = /* ver descripción */; // refina Typed y ScopeMember template <class T> concept Base = /* ver descripción */; // refina Object template <class T> concept FunctionParameter = /* ver descripción */; // refina Typed y ScopeMember template <class T> concept Callable = /* ver descripción */; // refina Scope y ScopeMember template <class T> concept Expression = /* ver descripción */; // refina Object template <class T> concept ParenthesizedExpression = /* ver descripción */; // refina Expression template <class T> concept FunctionCallExpression = /* ver descripción */; // refina Expression template <class T> concept FunctionalTypeConversion = /* ver descripción */; // refina Expression template <class T> concept Function = /* ver descripción */; // refina Typed y Callable template <class T> concept MemberFunction = /* ver descripción */; // refina RecordMember y Function template <class T> concept SpecialMemberFunction = /* ver descripción */; // refines RecordMember template <class T> concept Constructor = /* ver descripción */; // refina Callable y RecordMember template <class T> concept Destructor = /* ver descripción */; // refina Callable y SpecialMemberFunction template <class T> concept Operator = /* ver descripción */; // refines Function template <class T> concept ConversionOperator = /* ver descripción */; // refines MemberFunction and Operator template <class T> concept Lambda = /* ver descripción */; // refina Type y Scope template <class T> concept LambdaCapture = /* ver descripción */; // refina Variable // 21.12.4 Meta-object operations // Operaciones multi-concepto template <Object T> struct is_public; template <Object T> struct is_protected; template <Object T> struct is_private; template <Object T> struct is_constexpr; template <Object T> struct is_static; template <Object T> struct is_final; template <Object T> struct is_explicit; template <Object T> struct is_inline; template <Object T> struct is_virtual; template <Object T> struct is_pure_virtual; template <Object T> struct get_pointer; template <class T> requires RecordMember<T> || Base<T> constexpr auto is_public_v = is_public<T>::valor; template <class T> requires RecordMember<T> || Base<T> constexpr auto is_protected_v = is_protected<T>::valor; template <class T> requires RecordMember<T> || Base<T> constexpr auto is_private_v = is_private<T>::valor; template <class T> requires Variable<T> || Callable<T> constexpr auto is_constexpr_v = is_constexpr<T>::valor; template <class T> requires Variable<T> || MemberFunction<T> constexpr auto is_static_v = is_static<T>::valor; template <class T> requires Class<T> || MemberFunction<T> constexpr auto is_final_v = is_final<T>::valor; template <class T> requires Constructor<T> || ConversionOperator<T> constexpr auto is_explicit_v = is_explicit<T>::valor; template <class T> requires Namespace<T> || Callable<T> constexpr auto is_inline_v = is_inline<T>::valor; template <class T> requires Base<T> || MemberFunction<T> || Destructor<T> constexpr auto is_virtual_v = is_virtual<T>::valor; template <class T> requires MemberFunction<T> || Destructor<T> constexpr auto is_pure_virtual_v = is_pure_virtual<T>::valor; template <class T> requires Variable<T> || Function<T> constexpr auto get_pointer_v = get_pointer<T>::valor; // 21.12.4.1 Operaciones con objetos template <Object T1, Object T2> struct reflects_same; template <Object T> struct get_source_line; template <Object T> struct get_source_column; template <Object T> struct get_source_file_name; template <Object T1, Object T2> constexpr auto reflects_same_v = reflects_same<T1, T2>::valor; template <class T> constexpr auto get_source_line_v = get_source_line<T>::valor; template <class T> constexpr auto get_source_column_v = get_source_column<T>::valor; template <class T> constexpr auto get_source_file_name_v = get_source_file_name<T>::valor; // 21.12.4.2 Operaciones de ObjectSequence template <ObjectSequence T> struct get_size; template <size_t I, ObjectSequence T> struct get_element; template <template <class...> class Tpl, ObjectSequence T> struct unpack_sequence; template <ObjectSequence T> constexpr auto get_size_v = get_size<T>::valor; template <size_t I, ObjectSequence T> using get_element_t = typename get_element<I, T>::type; template <template <class...> class Tpl, ObjectSequence T> using unpack_sequence_t = typename unpack_sequence<Tpl, T>::type; // 21.12.4.3 Operaciones con nombre template <Named T> struct is_unnamed; template <Named T> struct get_name; template <Named T> struct get_display_name; template <Named T> constexpr auto is_unnamed_v = is_unnamed<T>::valor; template <Named T> constexpr auto get_name_v = get_name<T>::valor; template <Named T> constexpr auto get_display_name_v = get_display_name<T>::valor; // 21.12.4.4 Operaciones de alias template <Alias T> struct get_aliased; template <Alias T> using get_aliased_t = typename get_aliased<T>::type; // 21.12.4.5 Operaciones de tipo template <Typed T> struct get_type; template <Type T> struct get_reflected_type; template <Type T> struct is_enum; template <Class T> struct uses_class_key; template <Class T> struct uses_struct_key; template <Type T> struct is_union; template <Typed T> using get_type_t = typename get_type<T>::type; template <Type T> using get_reflected_type_t = typename get_reflected_type<T>::type; template <Type T> constexpr auto is_enum_v = is_enum<T>::valor; template <Class T> constexpr auto uses_class_key_v = uses_class_key<T>::valor; template <Class T> constexpr auto uses_struct_key_v = uses_struct_key<T>::valor; template <Type T> constexpr auto is_union_v = is_union<T>::valor; // 21.12.4.6 Operaciones de miembros template <ScopeMember T> struct get_scope; template <RecordMember T> struct is_public<T>; template <RecordMember T> struct is_protected<T>; template <RecordMember T> struct is_private<T>; template <ScopeMember T> using get_scope_t = typename get_scope<T>::type; // 21.12.4.7 Operaciones de registro template <Record T> struct get_public_data_members; template <Record T> struct get_accessible_data_members; template <Record T> struct get_data_members; template <Record T> struct get_public_member_functions; template <Record T> struct get_accessible_member_functions; template <Record T> struct get_member_functions; template <Record T> struct get_public_member_types; template <Record T> struct get_accessible_member_types; template <Record T> struct get_member_types; template <Record T> struct get_constructors; template <Record T> struct get_destructor; template <Record T> struct get_operators; template <Class T> struct get_public_base_classes; template <Class T> struct get_accessible_base_classes; template <Class T> struct get_base_classes; template <Class T> struct is_final<T>; template <Record T> using get_public_data_members_t = typename get_public_data_members<T>::type; template <Record T> using get_accessible_data_members_t = typename get_accessible_data_members<T>::type; template <Record T> using get_data_members_t = typename get_data_members<T>::type; template <Record T> using get_public_member_functions_t = typename get_public_member_functions<T>::type; template <Record T> using get_accessible_member_functions_t = typename get_accessible_member_functions<T>::type; template <Record T> using get_member_functions_t = typename get_member_functions<T>::type; template <Record T> using get_public_member_types_t = typename get_public_member_types<T>::type; template <Record T> using get_accessible_member_types_t = typename get_accessible_member_types<T>::type; template <Record T> using get_member_types_t = typename get_member_types<T>::type; template <Record T> using get_constructors_t = typename get_constructors<T>::type; template <Record T> using get_destructor_t = typename get_destructor<T>::type; template <Record T> using get_operators_t = typename get_operators<T>::type; template <Class T> using get_public_base_classes_t = typename get_public_base_classes<T>::type; template <Class T> using get_accessible_base_classes_t = typename get_accessible_base_classes<T>::type; template <Class T> using get_base_classes_t = typename get_base_classes<T>::type; // 21.12.4.8 Operaciones de enumeración template <Enum T> struct is_scoped_enum; template <Enum T> struct get_enumerators; template <Enum T> struct get_underlying_type; template <Enum T> constexpr auto is_scoped_enum_v = is_scoped_enum<T>::valor; template <Enum T> using get_enumerators_t = typename get_enumerators<T>::type; template <Enum T> using get_underlying_type_t = typename get_underlying_type<T>::type; // 21.12.4.9 Operaciones de valor template <Constant T> struct get_constant; template <Variable T> struct is_constexpr<T>; template <Variable T> struct is_static<T>; template <Variable T> struct is_thread_local; template <Variable T> struct get_pointer<T>; template <Constant T> constexpr auto get_constant_v = get_constant<T>::valor; template <Variable T> constexpr auto is_thread_local_v = is_thread_local<T>::valor; // 21.12.4.10 Operaciones base template <Base T> struct get_class; template <Base T> struct is_virtual<T>; template <Base T> struct is_public<T>; template <Base T> struct is_protected<T>; template <Base T> struct is_private<T>; template <Base T> using get_class_t = typename get_class<T>::type; // 21.12.4.11 Operaciones de namespace template <Namespace T> struct is_inline<T>; // 21.12.4.12 Operaciones de FunctionParameter template <FunctionParameter T> struct has_default_argument; template <FunctionParameter T> constexpr auto has_default_argument_v = has_default_argument<T>::valor; // 21.12.4.13 Operaciones invocables template <Callable T> struct get_parameters; template <Callable T> struct is_vararg; template <Callable T> struct is_constexpr<T>; template <Callable T> struct is_noexcept; template <Callable T> struct is_inline<T>; template <Callable T> struct is_deleted; template <Callable T> using get_parameters_t = typename get_parameters<T>::type; template <Callable T> constexpr auto is_vararg_v = is_vararg<T>::valor; template <Callable T> constexpr auto is_deleted_v = is_deleted<T>::valor; // 21.12.4.14 Operaciones de ParenthesizedExpression template <ParenthesizedExpression T> struct get_subexpression; template <ParenthesizedExpression T> using get_subexpression_t = typename get_subexpression<T>::type; // 21.12.4.15 Operaciones de FunctionCallExpression template <FunctionCallExpression T> struct get_callable; template <FunctionCallExpression T> using get_callable_t = typename get_callable<T>::type; // 21.12.4.16 Operaciones FunctionalTypeConversion template <FunctionalTypeConversion T> struct get_constructor; template <FunctionalTypeConversion T> using get_constructor_t = typename get_constructor<T>::type; // 21.12.4.17 Operaciones de función template <Function T> struct get_pointer<T>; // 21.12.4.18 Operaciones de MemberFunction template <MemberFunction T> struct is_static<T>; template <MemberFunction T> struct is_const; template <MemberFunction T> struct is_volatile; template <MemberFunction T> struct has_lvalueref_qualifier; template <MemberFunction T> struct has_rvalueref_qualifier; template <MemberFunction T> struct is_virtual<T>; template <MemberFunction T> struct is_pure_virtual<T>; template <MemberFunction T> struct is_override; template <MemberFunction T> struct is_final<T>; template <MemberFunction T> constexpr auto is_const_v = is_const<T>::valor; template <MemberFunction T> constexpr auto is_volatile_v = is_volatile<T>::valor; template <MemberFunction T> constexpr auto has_lvalueref_qualifier_v = has_lvalueref_qualifier<T>::valor; template <MemberFunction T> constexpr auto has_rvalueref_qualifier_v = has_rvalueref_qualifier<T>::valor; template <MemberFunction T> constexpr auto is_override_v = is_override<T>::valor; // 21.12.4.19 Operaciones de SpecialMemberFunction template <SpecialMemberFunction T> struct is_implicitly_declared; template <SpecialMemberFunction T> struct is_defaulted; template <SpecialMemberFunction T> constexpr auto is_implicitly_declared_v = is_implicitly_declared<T>::valor; template <SpecialMemberFunction T> constexpr auto is_defaulted_v = is_defaulted<T>::valor; // 21.12.4.20 Operaciones del constructor template <Constructor T> struct is_explicit<T>; // 21.12.4.21 Operaciones del destructor template <Destructor T> struct is_virtual<T>; template <Destructor T> struct is_pure_virtual<T>; // 21.12.4.22 Operaciones ConversionOperator template <ConversionOperator T> struct is_explicit<T>; // 21.12.4.23 Operaciones lambda template <Lambda T> struct get_captures; template <Lambda T> struct uses_default_copy_capture; template <Lambda T> struct uses_default_reference_capture; template <Lambda T> struct is_call_operator_const; template <Lambda T> using get_captures_t = typename get_captures<T>::type; template <Lambda T> constexpr auto uses_default_copy_capture_v = uses_default_copy_capture<T>::valor; template <Lambda T> constexpr auto uses_default_reference_capture_v = uses_default_reference_capture<T>::valor; template <Lambda T> constexpr auto is_call_operator_const_v = is_call_operator_const<T>::valor; // 21.12.4.24 Operaciones de LambdaCapture template <LambdaCapture T> struct is_explicitly_captured; template <LambdaCapture T> struct is_init_capture; template <LambdaCapture T> constexpr auto is_explicitly_captured_v = is_explicitly_captured<T>::valor; template <LambdaCapture T> constexpr auto is_init_capture_v = is_init_capture<T>::valor; } // inline namespace v1 } // namespace std::experimental::reflect