Namespaces
Variants

std::meta::members_of

De 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és de type
 
Défini dans l'en-tête <meta>
consteval std::vector<std::meta::info>
    members_of( std::meta::info r, std::meta::access_context ctx );
(depuis C++26)

Renvoie un std::vector contenant les réflexions des membres du type classe ou de l'espace de noms représenté par r, filtrées par le contexte d'accès ctx.

Chaque réflexion m dans le résultat représente un membre accessible qui a une déclaration éligible et est représentable (voir ci-dessous). L'accessibilité est déterminée comme par std::meta::is_accessible(m, ctx).

Soit Q le type classe ou l'espace de noms représenté par r.

Une déclaration est éligible si elle satisfait à toutes les exigences suivantes :

  • Elle est dans la portée de Q. (Une déclaration de fonction de portée de bloc n'est pas éligible, par exemple.)
  • Ce n'est pas une déclaration d'amie.
  • Ce n'est pas la déclaration d'un type fermeture.
  • Ce n'est pas la déclaration d'une spécialisation de modèle (partielle ou totale).
  • Si Q est un type classe qui n'est pas un type fermeture, la déclaration introduit un membre direct de Q qui n'est pas un membre variant d'une union anonyme imbriquée de Q.
  • Si Q est un type fermeture, la déclaration introduit un opérateur d'appel de fonction ou un modèle d'opérateur d'appel de fonction.

Il est défini par l'implémentation si les déclarations d'autres membres d'un type fermeture Q sont éligibles.

Seules les déclarations avant l'appel de members_of sont considérées.

Un membre est représentable s'il fait partie des éléments suivants :

  • un type classe ou énumération
  • un alias de type
  • un modèle de classe, un modèle de fonction, un modèle de variable, un modèle d'alias ou un concept
  • une variable ou référence dont le type ne contient pas un type placeholder
  • une fonction F pour laquelle :
  • le type de F ne contient pas de type placeholder non déduit ;
  • les contraintes (si présentes) de F sont satisfaites ; et
  • si F est un destructeur prospectif, c'est le destructeur sélectionné
  • un membre de données
  • un espace de noms
  • un alias d'espace de noms

Cette fonction traite les champs de bits anonymes déclarés dans la portée de Q comme des membres de données avec le même accès.

Les réflexions des membres de classe et des champs de bits anonymes apparaissent dans l'ordre dans lequel ils sont déclarés. Les membres spéciaux implicitement déclarés apparaissent après les membres définis par l'utilisateur.

Paramètres

r - une réflexion de type classe complet ou d'espace de noms
ctx - un contexte d'accès

Valeur de retour

Un std::vector de valeurs de réflexion qui représente les membres de classe ou les membres d'espace de noms.

Exceptions

Lance std::meta::exception sauf si std::meta::dealias(r) représente soit un type classe complet à partir d'un certain point dans le contexte d'évaluation, soit un espace de noms.

Exemple

Voir aussi

(C++26)
obtient les bases directes accessibles de la classe reflétée
(fonction)