std::meta::has_identifier
De es.cppreference.net
| Definido en el encabezado <meta>
|
||
consteval bool has_identifier( std::meta::info r );
|
(desde C++26) | |
Determina si lo que r representa tiene un identificador asociado (incluyendo un identificador de sufijo literal).
Formalmente:
- Si
rrepresenta una entidad con un typedef name for linkage purposes, devuelvetrue. - De lo contrario, si
rrepresenta una clase, enumeración, variable, campo de bits o espacio de nombres sin nombre, devuelvefalse. - De lo contrario, si
rrepresenta un alias de tipo, devuelve!std::meta::has_template_arguments(r). - De lo contrario, si
rrepresenta un tipo, devuelvetruesi:
rrepresenta un tipo de clase sin cv ystd::meta::has_template_arguments(r)esfalse, orrepresenta un tipo de enumeración sin cv.
- De lo contrario, si
rrepresenta una función, devuelvetruesistd::meta::has_template_arguments(r)esfalse, y la función no es un constructor, destructor, función de operador o función de conversión. - De lo contrario, si
rrepresenta una plantilla, devuelvetruesi la plantilla no es una plantilla de constructor, plantilla de función de operador o plantilla de función de conversión. - De lo contrario, si
rrepresenta un parámetro de función de una función que se instancia a partir de una plantilla de función, y el parámetro es un elemento de un paquete de parámetros de función, devuelvefalse. - De lo contrario, si
rrepresenta un parámetro de funciónPde una funciónF, entonces seaSel conjunto de declaraciones, ignorando cualquier instanciación explícita, que son alcanzables desde un punto en el contexto de evaluación y que declaran ya seaFo una función plantillada de la cualFes una especialización; devuelvetruesi
- hay una declaración
DenSque introduce un nombreNparaPo para el parámetro correspondiente aPen la función plantillada queDdeclara, y - ninguna declaración en
Slo hace usando cualquier nombre distinto deN.
- hay una declaración
void fun(int);
constexpr std::meta::info r = parameters_of(^^fun)[0];
static_assert(!has_identifier(r));
void fun(int x);
static_assert(has_identifier(r));
void fun(int x);
static_assert(has_identifier(r));
void poison() {
void fun(int y);
}
static_assert(!has_identifier(r));
- De lo contrario, si
rrepresenta una variable, devuelvefalsesi la variable corresponde a un elemento de un paquete de parámetros de función, ostd::meta::has_template_arguments(r)estrue, y devuelvetrueen caso contrario. - De lo contrario, si
rrepresenta una vinculación estructurada, devuelvefalsesi la vinculación estructurada es un elemento de un paquete de vinculaciones estructuradas, otrueen caso contrario. - De lo contrario, si
rrepresenta un enumerador, miembro de datos no estático, espacio de nombres o alias de espacio de nombres, devuelvetrue. - De lo contrario, si
rrepresenta una relación de clase base directa, devuelvestd::meta::has_identifier(std::meta::type_of(r)). - De lo contrario, si
rrepresenta una descripción de miembro de datos (T, N, A, W, NUA, ANN), devuelvetruesi el nombre N de la descripción no es ⊥. - De lo contrario, devuelve
false.
Parámetros
| r | - | un valor de reflexión |
Valor de retorno
true si lo que r representa tiene un identificador, false en caso contrario.
Ejemplo
| Esta sección está incompleta Razón: sin ejemplo |
Véase también
(C++26) |
convierte un enumerador meta::operators a su nombre simbólico (función) |
(C++26) |
si la entidad reflejada tiene un identificador, obtiene su nombre (función) |
| obtiene una cadena adecuada para identificar la entidad reflejada (función) |