Bibliothèque de réflexion (depuis C++26)
De fr.cppreference.net
Les fonctionnalités définies dans cette section prennent en charge la programmation réflexive, permettant aux programmes C++ d'observer la structure du programme lui-même et de générer du code dépendant de ces observations.
Langage de base
La bibliothèque de réflexion fonctionne conjointement avec deux fonctionnalités du langage de base :
Bibliothèque de réflexion
| Cette section est incomplète |
Défini dans l'en-tête
<meta> | |
(C++26) |
le type des valeurs de réflexion (typedef) |
(C++26) |
exception levée par les fonctions de réflexion (classe) |
Promotion vers le stockage statique | |
(C++26) |
promeut une chaîne à la compilation vers le stockage statique, renvoyant une réflexion représentant la chaîne statique (modèle de fonction) |
(C++26) |
promeut un tableau à la compilation vers le stockage statique, renvoyant une réflexion représentant le tableau statique (modèle de fonction) |
(C++26) |
promeut une chaîne à la compilation vers le stockage statique, renvoyant un pointeur vers le premier caractère de la chaîne statique (modèle de fonction) |
(C++26) |
promeut un tableau à la compilation vers le stockage statique, renvoyant une vue (span) du tableau statique (modèle de fonction) |
(C++26) |
promeut une valeur à la compilation vers le stockage statique, renvoyant un pointeur vers l'objet statique (modèle de fonction) |
Représentations des opérateurs | |
(C++26) |
identifie les opérateurs surchargeables (enum) |
(C++26) |
identifie l'opérateur représenté par la réflexion (fonction) |
(C++26) |
convertit un meta::operators énumérateur en son nom symbolique (fonction) |
Noms et emplacements de réflexion | |
(C++26) |
vérifie si la réflexion représente une entité qui a un identifiant (fonction) |
(C++26) |
si l'entité réfléchie a un identifiant, obtient son nom (fonction) |
| obtient une chaîne adaptée pour identifier l'entité réfléchie (fonction) | |
(C++26) |
obtient l'emplacement source de l'entité réfléchie (fonction) |
Requêtes de réflexion | |
(C++26) |
obtient une réflexion du type de l'entité réfléchie (fonction) |
(C++26) |
obtient une réflexion de l'objet de la variable réfléchie (fonction) |
(C++26) |
obtient une réflexion de la valeur constante de l'entité réfléchie (fonction) |
| vérifie si la réflexion représente un membre public, protégé ou privé, ou une classe de base (fonction) | |
(C++26) |
vérifie si la réflexion représente une fonction membre virtuelle ou une classe de base virtuelle (fonction) |
(C++26) |
vérifie si la réflexion représente une fonction membre virtuelle pure (fonction) |
(C++26) |
vérifie si la réflexion représente une fonction membre qui surcharge une autre fonction membre (fonction) |
(C++26) |
vérifie si la réflexion représente une classe finale ou une fonction membre finale (fonction) |
(C++26) |
vérifie si la réflexion représente une fonction supprimée (fonction) |
(C++26) |
vérifie si la réflexion représente une fonction par défaut (fonction) |
(C++26) |
vérifie si la réflexion représente une fonction fournie par l'utilisateur (fonction) |
(C++26) |
vérifie si la réflexion représente une fonction déclarée par l'utilisateur (fonction) |
(C++26) |
vérifie si la réflexion représente une fonction membre qui est déclarée explicit (fonction) |
(C++26) |
vérifie si la réflexion représente une fonction noexcept ou un type de fonction (fonction) |
(C++26) |
vérifie si la réflexion représente un champ de bits ou une description de membre de données de champ de bits (fonction) |
(C++26) |
vérifie si la réflexion représente un énumérateur (fonction) |
(C++26) |
vérifie si la réflexion représente une annotation (fonction) |
(C++26) |
vérifie si la réflexion représente un type const ou un type de fonction avec qualificatif const (fonction) |
(C++26) |
vérifie si la réflexion représente un type volatile ou un type de fonction avec qualificatif volatile (fonction) |
(C++26) |
vérifie si la réflexion représente un mutable membre de donnée non statique (fonction) |
| vérifie si l'entité réfléchie est une fonction membre qualifiée par référence (fonction) | |
| vérifie si l'entité réfléchie a une durée de stockage (fonction) | |
| vérifie si l'entité réfléchie a un lien (fonction) | |
(C++26) |
vérifie si l'entité réfléchie a un lien de langage "C" (extern "C") (fonction) |
(C++26) |
vérifie si la réflexion représente un type complet (fonction) |
(C++26) |
vérifie si le type réfléchi a sa liste de membres complètement définie (fonction) |
(C++26) |
vérifie si la réflexion représente une variable (fonction) |
(C++26) |
vérifie si la réflexion représente un type (fonction) |
(C++26) |
vérifie si la réflexion représente un espace de noms (fonction) |
(C++26) |
vérifie si la réflexion représente un alias de type (fonction) |
(C++26) |
vérifie si la réflexion représente un alias d'espace de noms (fonction) |
(C++26) |
vérifie si la réflexion représente une fonction (fonction) |
(C++26) |
vérifie si la réflexion représente une fonction de conversion (fonction) |
(C++26) |
vérifie si la réflexion représente une surcharge d'opérateur (fonction) |
(C++26) |
vérifie si la réflexion représente un opérateur littéral défini par l'utilisateur (fonction) |
(C++26) |
vérifie si la réflexion représente une fonction membre spéciale (fonction) |
| vérifie si l'entité réfléchie est un constructeur de ce type (fonction) | |
| vérifie si l'entité réfléchie est un opérateur d'affectation de ce type (fonction) | |
(C++26) |
vérifie si l'entité réfléchie est un destructeur (fonction) |
(C++26) |
vérifie si la réflexion représente un paramètre de fonction (fonction) |
(C++26) |
vérifie si la réflexion représente un paramètre objet explicite (fonction) |
(C++26) |
vérifie si le paramètre de fonction réfléchi a un argument par défaut (fonction) |
(C++26) |
vérifie si la réflexion représente une fonction ou un type de fonction avec un paramètre de points de suspension (fonction) |
(C++26) |
vérifie si la réflexion représente une valeur (scalaire) (fonction) |
(C++26) |
vérifie si la réflexion représente un objet statique (fonction) |
(C++26) |
vérifie si la réflexion représente une liaison structurée (fonction) |
(C++26) |
vérifie si la réflexion représente un membre de classe (fonction) |
(C++26) |
vérifie si la réflexion représente un membre d'espace de noms (fonction) |
(C++26) |
vérifie si la réflexion représente un membre de donnée non statique (fonction) |
(C++26) |
vérifie si la réflexion représente un membre statique de classe (fonction) |
(C++26) |
vérifie si la réflexion représente une relation de classe de base directe (fonction) |
| vérifie si le membre de donnée non statique réfléchi a un initialiseur de membre par défaut (fonction) | |
(C++26) |
vérifie si l'entité réfléchie est contenue dans une portée (fonction) |
(C++26) |
obtient la portée qui contient l'entité réfléchie (fonction) |
(C++26) |
obtient une réflexion de l'entité sous-jacente de l'alias de type/espace de noms réfléchi (fonction) |
(C++26) |
vérifie si l'entité réfléchie est produite en substituant des arguments de modèle dans un modèle (fonction) |
(C++26) |
obtient une réflexion du modèle utilisé pour instancier l'entité réfléchie (fonction) |
(C++26) |
obtient les arguments de modèle de l'entité réfléchie (fonction) |
(C++26) |
obtient les paramètres de la fonction réfléchie (fonction) |
(C++26) |
obtient la variable du paramètre de fonction réfléchi dans la définition de fonction (fonction) |
(C++26) |
obtient le type de retour de la fonction réfléchie (fonction) |
Requêtes d'accessibilité | |
(C++26) |
représente un contexte pour la vérification d'accès (classe) |
(C++26) |
vérifie si un membre est accessible dans un contexte donné (fonction) |
| vérifie si la classe réfléchie a des membres de données non statiques inaccessibles (fonction) | |
(C++26) |
vérifie si la classe réfléchie a des classes de base directes inaccessibles (fonction) |
(C++26) |
vérifie si la classe réfléchie a des membres de données non statiques ou des classes de base directes inaccessibles (fonction) |
Identification de portée | |
(C++26) |
renvoie une réflexion de la fonction englobante (fonction) |
(C++26) |
renvoie une réflexion de la classe englobante (fonction) |
(C++26) |
renvoie une réflexion de l'espace de noms englobant (fonction) |
Requêtes de membres de réflexion | |
(C++26) |
obtient les membres directs accessibles de la classe ou de l'espace de noms réfléchi (fonction) |
(C++26) |
obtient les bases directes accessibles de la classe réfléchie (fonction) |
(C++26) |
obtient les membres de données statiques accessibles de la classe réfléchie (fonction) |
(C++26) |
obtient les membres de données non statiques accessibles de la classe réfléchie (fonction) |
(C++26) |
obtient les sous-objets de classe de base et les membres de données non statiques accessibles de la classe réfléchie (fonction) |
(C++26) |
obtient les énumérateurs du type enum réfléchi (fonction) |
Requêtes de disposition de réflexion | |
(C++26) |
renvoie le décalage d'un sous-objet (membre ou base) par rapport à sa classe englobante (fonction) |
(C++26) |
renvoie la taille en octets de l'objet ou du type réfléchi (fonction) |
(C++26) |
renvoie l'alignement de l'objet ou du type réfléchi (fonction) |
(C++26) |
renvoie la taille en bits de l'objet ou du type réfléchi (fonction) |
Réflexion d'annotation | |
(C++26) |
obtient les annotations s'appliquant à l'entité réfléchie (fonction) |
(C++26) |
obtient les annotations qui s'appliquent à l'entité réfléchie et ont le type spécifié (fonction) |
Extraction de valeur | |
(C++26) |
extrait la valeur de l'entité réfléchie (modèle de fonction) |
Substitution de réflexion | |
(C++26) |
spécifie une plage de valeurs de réflexion (concept) |
(C++26) |
vérifie si les arguments réfléchis peuvent être substitués dans le modèle réfléchi (modèle de fonction) |
(C++26) |
obtient une réflexion du résultat de la substitution des arguments réfléchis dans le modèle réfléchi (modèle de fonction) |
Réflexion de résultat d'expression | |
(C++26) |
renvoie une réflexion représentant une valeur ou un objet paramètre de modèle, adapté pour être utilisé comme argument de modèle constant (modèle de fonction) |
(C++26) |
renvoie une réflexion représentant un objet, adapté pour être utilisé comme argument de modèle constant (modèle de fonction) |
(C++26) |
renvoie une réflexion représentant une fonction, adapté pour être utilisé comme argument de modèle constant (modèle de fonction) |
Génération de définition de classe | |
(C++26) |
crée une description de membre de donnée pour une utilisation avec les déclarations injectées (fonction) |
(C++26) |
vérifie si la réflexion représente une description de membre de donnée (fonction) |
(C++26) |
définit un type agrégé à partir d'une séquence de descriptions de membres de données (modèle de fonction) |
Catégories de types primaires | |
Catégories de types composites | |
Propriétés de type | |
Requêtes de propriétés de type | |
Relations de type | |
Modifications const-volatile | |
Modifications de référence | |
Modifications de signe | |
Modifications de tableau | |
Modifications de pointeur | |
Autres transformations | |
Vérification des littéraux de chaîne | |
(C++26) |
vérifie si un pointeur pointe vers un littéral de chaîne (fonction) |
Notes
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_reflection |
202506L |
(C++26) | <meta>: Prise en charge de la bibliothèque de réflexion. Exceptions constexpr comme gestion d'erreurs dans la réflexion. |
Exemple
| Cette section est incomplète Raison : pas d'exemple |