Namespaces
Variants

std::meta::members_of

De es.cppreference.net
< cpp | meta
 
 
 
Biblioteca de reflexión
 
Tipos y consultas de reflexión
Consultas de reflexión
Consultas de diseño de reflexión
Propiedades de tipo
Consultas de propiedades de tipo
 
Definido en el encabezado <meta>
consteval std::vector<std::meta::info>
    members_of( std::meta::info r, std::meta::access_context ctx );
(desde C++26)

Devuelve un std::vector que contiene las reflexiones de los miembros del tipo de clase o espacio de nombres representado por r, filtrado por el contexto de acceso ctx.

Cada reflexión m en el resultado representa un miembro accesible que tiene una declaración elegible y es representable (ver abajo). La accesibilidad se determina como si fuera por std::meta::is_accessible(m, ctx).

Sea Q el tipo de clase o espacio de nombres representado por r.

Una declaración es elegible si cumple todos los siguientes requisitos:

  • Está en el ámbito de Q. (Por ejemplo, una declaración de función con ámbito de bloque no es elegible.)
  • No es una declaración friend.
  • No es la declaración de un tipo de clausura.
  • No es la declaración de una especialización de plantilla (parcial o completa).
  • Si Q es un tipo de clase que no es un tipo de clausura, la declaración introduce un miembro directo de Q que no es un miembro variante de una unión anónima anidada de Q.
  • Si Q es un tipo de clausura, la declaración introduce un operador de llamada a función o una plantilla de operador de llamada a función.

Está definido por la implementación si las declaraciones de otros miembros de un tipo de clausura Q son elegibles.

Solo se consideran las declaraciones anteriores a la llamada members_of.

Un miembro es representable si es uno de los siguientes:

  • un tipo de clase o enumeración
  • un alias de tipo
  • una plantilla de clase, plantilla de función, plantilla de variable, plantilla de alias, o concepto
  • una variable o referencia cuyo tipo no contiene un tipo placeholder no deducido
  • una función F para la cual:
  • el tipo de F no contiene un tipo placeholder no deducido;
  • las restricciones (si las hay) de F se satisfacen; y
  • si F es un destructor prospectivo, es el destructor seleccionado
  • un miembro de datos
  • un espacio de nombres
  • un alias de espacio de nombres

Esta función trata los campos de bits sin nombre declarados en el ámbito de Q como miembros de datos con el mismo acceso.

Las reflexiones de los miembros de clase y los campos de bits sin nombre aparecen en el orden en que se declaran. Los miembros especiales declarados implícitamente aparecen después de cualquier miembro definido por el usuario.

Parámetros

r - una reflexión de tipo de clase completa o espacio de nombres
ctx - un contexto de acceso

Valor de retorno

Un std::vector de valores de reflexión que representan miembros de clase o miembros de espacio de nombres.

Excepciones

Lanza std::meta::exception a menos que std::meta::dealias(r) represente ya sea un tipo de clase completo desde algún punto en el contexto de evaluación, o un espacio de nombres.

Ejemplo

Véase también

(C++26)
obtiene las bases directas accesibles de la clase reflejada
(función)