Namespaces
Variants

std::meta::has_identifier

Depuis fr.cppreference.net
< cpp | meta
 
 
 
Bibliothèque de réflexion
 
Types et requêtes de réflexion
Requêtes de réflexion
Requêtes de disposition de réflexion
Propriétés de type
Requêtes de propriété de type
 
Défini dans l'en-tête <meta>
consteval bool has_identifier( std::meta::info r );
(depuis C++26)

Détermine si ce que r représente a un identifiant associé (y compris un identifiant de suffixe littéral).

Formellement :

  • Si r représente une entité avec un nom de type pour les besoins de liaison, renvoie true.
  • Sinon, si r représente une classe, énumération, variable, champ de bits, ou espace de noms anonyme, renvoie false.
  • Sinon, si r représente un alias de type, renvoie !std::meta::has_template_arguments(r).
  • Sinon, si r représente un type, renvoie true si :
  • r représente un type de classe non qualifié cv et std::meta::has_template_arguments(r) est false, ou
  • r représente un type d'énumération non qualifié cv.
  • Sinon, si r représente une fonction, renvoie true si std::meta::has_template_arguments(r) est false, et la fonction n'est pas un constructeur, destructeur, fonction opérateur, ou fonction de conversion.
  • Sinon, si r représente un modèle, renvoie true si le modèle n'est pas un modèle de constructeur, modèle de fonction opérateur, ou modèle de fonction de conversion.
  • Sinon, si r représente un paramètre de fonction d'une fonction qui est instanciée à partir d'un modèle de fonction, et le paramètre est un élément d'un pack de paramètres de fonction, renvoie false.
  • Sinon, si r représente un paramètre de fonction P d'une fonction F, alors soit S l'ensemble des déclarations, ignorant toute instanciation explicite, qui sont accessibles depuis un point dans le contexte d'évaluation et qui déclarent soit F soit une fonction modèle dont F est une spécialisation ; renvoie true si
  • il existe une déclaration D dans S qui introduit un nom N pour soit P soit le paramètre correspondant à P dans la fonction modèle que D déclare, et
  • aucune déclaration dans S ne le fait en utilisant un nom autre que 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));
  • Sinon, si r représente une variable, renvoie false si soit la variable correspond à un élément d'un pack de paramètres de fonction, soit std::meta::has_template_arguments(r) est true, et renvoie true sinon.
  • Sinon, si r représente une liaison structurée, renvoie false si la liaison structurée est un élément d'un pack de liaisons structurées, ou true sinon.
  • Sinon, si r représente un énumérateur, un membre de données non statique, un espace de noms ou un alias d'espace de noms, renvoie true.
  • Sinon, si r représente une relation de classe de base directe, renvoie std::meta::has_identifier(std::meta::type_of(r)).
  • Sinon, si r représente une description de membre de données (T, N, A, W, NUA, ANN), renvoie true si le nom de la description N n'est pas ⊥.
  • Sinon, renvoie false.

Paramètres

r - une valeur de réflexion

Valeur de retour

true si ce que r représente a un identifiant, false sinon.

Exemple

Voir aussi

convertit un meta::operators énumérateur en son nom symbolique
(fonction)
si l'entité réfléchie a un identifiant, obtient son nom
(fonction)
obtient une chaîne appropriée pour identifier l'entité réfléchie
(fonction)