Namespaces
Variants

Bibliothèque de réflexion (depuis C++26)

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
 

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 :

  • l'opérateur de réflexion ^^
  • les spécificateurs de greffe [: ... :]

Bibliothèque de réflexion

Modèle:cpp/meta/dsc is templateModèle:cpp/meta/dsc is function templateModèle:cpp/meta/dsc is variable templateModèle:cpp/meta/dsc is class templateModèle:cpp/meta/dsc is alias templateModèle:cpp/meta/dsc is conversion function templateModèle:cpp/meta/dsc is operator function templateModèle:cpp/meta/dsc is literal operator templateModèle:cpp/meta/dsc is constructor templateModèle:cpp/meta/dsc is conceptModèle:cpp/meta/dsc member offsetModèle:cpp/meta/dsc data member optionsModèle:cpp/meta/dsc is void typeModèle:cpp/meta/dsc is null pointer typeModèle:cpp/meta/dsc is integral typeModèle:cpp/meta/dsc is floating point typeModèle:cpp/meta/dsc is array typeModèle:cpp/meta/dsc is pointer typeModèle:cpp/meta/dsc is lvalue reference typeModèle:cpp/meta/dsc is rvalue reference typeModèle:cpp/meta/dsc is member object pointer typeModèle:cpp/meta/dsc is member function pointer typeModèle:cpp/meta/dsc is enum typeModèle:cpp/meta/dsc is union typeModèle:cpp/meta/dsc is class typeModèle:cpp/meta/dsc is function typeModèle:cpp/meta/dsc is reflection typeModèle:cpp/meta/dsc is reference typeModèle:cpp/meta/dsc is arithmetic typeModèle:cpp/meta/dsc is fundamental typeModèle:cpp/meta/dsc is object typeModèle:cpp/meta/dsc is scalar typeModèle:cpp/meta/dsc is compound typeModèle:cpp/meta/dsc is member pointer typeModèle:cpp/meta/dsc is const typeModèle:cpp/meta/dsc is volatile typeModèle:cpp/meta/dsc is trivially copyable typeModèle:cpp/meta/dsc is standard layout typeModèle:cpp/meta/dsc is empty typeModèle:cpp/meta/dsc is polymorphic typeModèle:cpp/meta/dsc is abstract typeModèle:cpp/meta/dsc is final typeModèle:cpp/meta/dsc is aggregate typeModèle:cpp/meta/dsc is structural typeModèle:cpp/meta/dsc is signed typeModèle:cpp/meta/dsc is unsigned typeModèle:cpp/meta/dsc is bounded array typeModèle:cpp/meta/dsc is unbounded array typeModèle:cpp/meta/dsc is scoped enum typeModèle:cpp/meta/dsc is constructible typeModèle:cpp/meta/dsc is default constructible typeModèle:cpp/meta/dsc is copy constructible typeModèle:cpp/meta/dsc is move constructible typeModèle:cpp/meta/dsc is assignable typeModèle:cpp/meta/dsc is copy assignable typeModèle:cpp/meta/dsc is move assignable typeModèle:cpp/meta/dsc is swappable with typeModèle:cpp/meta/dsc is swappable typeModèle:cpp/meta/dsc is destructible typeModèle:cpp/meta/dsc is trivially constructible typeModèle:cpp/meta/dsc is trivially default constructible typeModèle:cpp/meta/dsc is trivially copy constructible typeModèle:cpp/meta/dsc is trivially move constructible typeModèle:cpp/meta/dsc is trivially assignable typeModèle:cpp/meta/dsc is trivially copy assignable typeModèle:cpp/meta/dsc is trivially move assignable typeModèle:cpp/meta/dsc is trivially destructible typeModèle:cpp/meta/dsc is nothrow constructible typeModèle:cpp/meta/dsc is nothrow default constructible typeModèle:cpp/meta/dsc is nothrow copy constructible typeModèle:cpp/meta/dsc is nothrow move constructible typeModèle:cpp/meta/dsc is nothrow assignable typeModèle:cpp/meta/dsc is nothrow copy assignable typeModèle:cpp/meta/dsc is nothrow move assignable typeModèle:cpp/meta/dsc is nothrow swappable with typeModèle:cpp/meta/dsc is nothrow swappable typeModèle:cpp/meta/dsc is nothrow destructible typeModèle:cpp/meta/dsc is implicit lifetime typeModèle:cpp/meta/dsc has virtual destructorModèle:cpp/meta/dsc has unique object representationsModèle:cpp/meta/dsc reference constructs from temporaryModèle:cpp/meta/dsc reference converts from temporaryModèle:cpp/meta/dsc rankModèle:cpp/meta/dsc extentModèle:cpp/meta/dsc is same typeModèle:cpp/meta/dsc is base of typeModèle:cpp/meta/dsc is virtual base of typeModèle:cpp/meta/dsc is convertible typeModèle:cpp/meta/dsc is nothrow convertible typeModèle:cpp/meta/dsc is layout compatible typeModèle:cpp/meta/dsc is pointer interconvertible base of typeModèle:cpp/meta/dsc is invocable typeModèle:cpp/meta/dsc is invocable r typeModèle:cpp/meta/dsc is nothrow invocable typeModèle:cpp/meta/dsc is nothrow invocable r typeModèle:cpp/meta/dsc remove constModèle:cpp/meta/dsc remove volatileModèle:cpp/meta/dsc remove cvModèle:cpp/meta/dsc add constModèle:cpp/meta/dsc add volatileModèle:cpp/meta/dsc add cvModèle:cpp/meta/dsc remove referenceModèle:cpp/meta/dsc add lvalue referenceModèle:cpp/meta/dsc add rvalue referenceModèle:cpp/meta/dsc make signedModèle:cpp/meta/dsc make unsignedModèle:cpp/meta/dsc remove extentModèle:cpp/meta/dsc remove all extentsModèle:cpp/meta/dsc remove pointerModèle:cpp/meta/dsc add pointerModèle:cpp/meta/dsc remove cvrefModèle:cpp/meta/dsc decayModèle:cpp/meta/dsc common typeModèle:cpp/meta/dsc common referenceModèle:cpp/meta/dsc underlying typeModèle:cpp/meta/dsc invoke resultModèle:cpp/meta/dsc unwrap referenceModèle:cpp/meta/dsc unwrap ref decayModèle:cpp/meta/dsc tuple sizeModèle:cpp/meta/dsc tuple elementModèle:cpp/meta/dsc is applicable typeModèle:cpp/meta/dsc is nothrow applicable typeModèle:cpp/meta/dsc apply resultModèle:cpp/meta/dsc variant sizeModèle:cpp/meta/dsc variant alternativeModèle:cpp/meta/dsc type order
Défini dans l'en-tête <meta>
(C++26)
le type des valeurs de réflexion
(typedef)
exception levée par les fonctions de réflexion
(classe)
Promotion vers le stockage statique
promeut une chaîne à la compilation vers le stockage statique, renvoyant une réflexion représentant la chaîne statique
(modèle de fonction)
promeut un tableau à la compilation vers le stockage statique, renvoyant une réflexion représentant le tableau statique
(modèle de fonction)
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)
promeut un tableau à la compilation vers le stockage statique, renvoyant une vue (span) du tableau statique
(modèle de fonction)
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)
identifie l'opérateur représenté par la réflexion
(fonction)
convertit un meta::operators énumérateur en son nom symbolique
(fonction)
Noms et emplacements de réflexion
vérifie si la réflexion représente une entité qui a un identifiant
(fonction)
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)
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)
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)
vérifie si la réflexion représente une fonction membre virtuelle ou une classe de base virtuelle
(fonction)
vérifie si la réflexion représente une fonction membre virtuelle pure
(fonction)
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)
vérifie si la réflexion représente une fonction supprimée
(fonction)
vérifie si la réflexion représente une fonction par défaut
(fonction)
vérifie si la réflexion représente une fonction fournie par l'utilisateur
(fonction)
vérifie si la réflexion représente une fonction déclarée par l'utilisateur
(fonction)
vérifie si la réflexion représente une fonction membre qui est déclarée explicit
(fonction)
vérifie si la réflexion représente une fonction noexcept ou un type de fonction
(fonction)
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)
vérifie si la réflexion représente un énumérateur
(fonction)
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)
vérifie si la réflexion représente un type volatile ou un type de fonction avec qualificatif volatile
(fonction)
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)
vérifie si l'entité réfléchie a un lien de langage "C" (extern "C")
(fonction)
vérifie si la réflexion représente un type complet
(fonction)
vérifie si le type réfléchi a sa liste de membres complètement définie
(fonction)
vérifie si la réflexion représente une variable
(fonction)
(C++26)
vérifie si la réflexion représente un type
(fonction)
vérifie si la réflexion représente un espace de noms
(fonction)
vérifie si la réflexion représente un alias de type
(fonction)
vérifie si la réflexion représente un alias d'espace de noms
(fonction)
vérifie si la réflexion représente une fonction
(fonction)
vérifie si la réflexion représente une fonction de conversion
(fonction)
vérifie si la réflexion représente une surcharge d'opérateur
(fonction)
vérifie si la réflexion représente un opérateur littéral défini par l'utilisateur
(fonction)
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)
vérifie si l'entité réfléchie est un destructeur
(fonction)
vérifie si la réflexion représente un paramètre de fonction
(fonction)
vérifie si la réflexion représente un paramètre objet explicite
(fonction)
vérifie si le paramètre de fonction réfléchi a un argument par défaut
(fonction)
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)
vérifie si la réflexion représente une liaison structurée
(fonction)
vérifie si la réflexion représente un membre de classe
(fonction)
vérifie si la réflexion représente un membre d'espace de noms
(fonction)
vérifie si la réflexion représente un membre de donnée non statique
(fonction)
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)
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)
vérifie si l'entité réfléchie est produite en substituant des arguments de modèle dans un modèle
(fonction)
obtient une réflexion du modèle utilisé pour instancier l'entité réfléchie
(fonction)
obtient les arguments de modèle de l'entité réfléchie
(fonction)
obtient les paramètres de la fonction réfléchie
(fonction)
obtient la variable du paramètre de fonction réfléchi dans la définition de fonction
(fonction)
obtient le type de retour de la fonction réfléchie
(fonction)
Requêtes d'accessibilité
représente un contexte pour la vérification d'accès
(classe)
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)
vérifie si la classe réfléchie a des classes de base directes inaccessibles
(fonction)
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
renvoie une réflexion de la fonction englobante
(fonction)
renvoie une réflexion de la classe englobante
(fonction)
renvoie une réflexion de l'espace de noms englobant
(fonction)
Requêtes de membres de réflexion
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)
obtient les membres de données statiques accessibles de la classe réfléchie
(fonction)
obtient les membres de données non statiques accessibles de la classe réfléchie
(fonction)
obtient les sous-objets de classe de base et les membres de données non statiques accessibles de la classe réfléchie
(fonction)
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)
renvoie l'alignement de l'objet ou du type réfléchi
(fonction)
renvoie la taille en bits de l'objet ou du type réfléchi
(fonction)
Réflexion d'annotation
obtient les annotations s'appliquant à l'entité réfléchie
(fonction)
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
spécifie une plage de valeurs de réflexion
(concept)
vérifie si les arguments réfléchis peuvent être substitués dans le modèle réfléchi
(modèle de fonction)
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
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)
renvoie une réflexion représentant un objet, adapté pour être utilisé comme argument de modèle constant
(modèle de fonction)
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
crée une description de membre de donnée pour une utilisation avec les déclarations injectées
(fonction)
vérifie si la réflexion représente une description de membre de donnée
(fonction)
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
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