std::meta::members_of
| 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
Qest un type classe qui n'est pas un type fermeture, la déclaration introduit un membre direct deQqui n'est pas un membre variant d'une union anonyme imbriquée deQ. - Si
Qest 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
Fpour laquelle :
- le type de
Fne contient pas de type placeholder non déduit ; - les contraintes (si présentes) de
Fsont satisfaites ; et - si
Fest un destructeur prospectif, c'est le destructeur sélectionné
- le type de
- 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
| Cette section est incomplète Raison : pas d'exemple |
Voir aussi
(C++26) |
obtient les bases directes accessibles de la classe reflétée (fonction) |