std::meta::members_of
| 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
Qes un tipo de clase que no es un tipo de clausura, la declaración introduce un miembro directo deQque no es un miembro variante de una unión anónima anidada deQ. - Si
Qes 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
Fpara la cual:
- el tipo de
Fno contiene un tipo placeholder no deducido; - las restricciones (si las hay) de
Fse satisfacen; y - si
Fes un destructor prospectivo, es el destructor seleccionado
- el tipo de
- 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
| Esta sección está incompleta Razón: sin ejemplo |
Véase también
(C++26) |
obtiene las bases directas accesibles de la clase reflejada (función) |