Namespaces
Variants

std::meta::has_identifier

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 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 r representa una entidad con un typedef name for linkage purposes, devuelve true.
  • De lo contrario, si r representa una clase, enumeración, variable, campo de bits o espacio de nombres sin nombre, devuelve false.
  • De lo contrario, si r representa un alias de tipo, devuelve !std::meta::has_template_arguments(r).
  • De lo contrario, si r representa un tipo, devuelve true si:
  • r representa un tipo de clase sin cv y std::meta::has_template_arguments(r) es false, o
  • r representa un tipo de enumeración sin cv.
  • De lo contrario, si r representa una función, devuelve true si std::meta::has_template_arguments(r) es false, y la función no es un constructor, destructor, función de operador o función de conversión.
  • De lo contrario, si r representa una plantilla, devuelve true si 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 r representa 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, devuelve false.
  • De lo contrario, si r representa un parámetro de función P de una función F, entonces sea S el 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 sea F o una función plantillada de la cual F es una especialización; devuelve true si
  • hay una declaración D en S que introduce un nombre N para P o para el parámetro correspondiente a P en la función plantillada que D declara, y
  • ninguna declaración en S lo hace usando cualquier nombre distinto de 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 r representa una variable, devuelve false si la variable corresponde a un elemento de un paquete de parámetros de función, o std::meta::has_template_arguments(r) es true, y devuelve true en caso contrario.
  • De lo contrario, si r representa una vinculación estructurada, devuelve false si la vinculación estructurada es un elemento de un paquete de vinculaciones estructuradas, o true en caso contrario.
  • De lo contrario, si r representa un enumerador, miembro de datos no estático, espacio de nombres o alias de espacio de nombres, devuelve true.
  • De lo contrario, si r representa una relación de clase base directa, devuelve std::meta::has_identifier(std::meta::type_of(r)).
  • De lo contrario, si r representa una descripción de miembro de datos (T, N, A, W, NUA, ANN), devuelve true si 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

Véase también

convierte un enumerador meta::operators a su nombre simbólico
(función)
si la entidad reflejada tiene un identificador, obtiene su nombre
(función)
obtiene una cadena adecuada para identificar la entidad reflejada
(función)