Annotations (depuis C++26)
Attacher des informations aux déclarations d'une manière que la réflexion peut observer.
Syntaxe
La liste des annotations est introduite dans un spécificateur d'attribut. Chaque annotation commence par =.
= expression-constante
|
|||||||||
Explication
Une annotation peut être appliquée à toute déclaration d'un type, d'un alias de type, d'une variable, d'une fonction, d'un paramètre de fonction de type non void, d'un espace de noms, d'un énumérateur, d'un spécificateur de base, ou d'un membre de données non statique.
Soit E égal à std::meta::reflect_constant(expr) (où expr est l'expression-constante), E doit être une expression constante. Le résultat de E peut être observé en appelant std::meta::constant_of sur la réflexion de l'annotation.
Les annotations sont toujours distinctes les unes des autres, même si elles ont des valeurs équivalentes et sont appliquées à la même déclaration.
[[=42, =42]] int x;
static_assert(std::meta::annotations_of(^^x).size() == 2);
[[=42]] int f();
[[=24]] int f();
static_assert(std::meta::annotations_of(^^f).size() == 2);
La substitution dans une annotation n'est pas un contexte immédiat.
Exemple
| Cette section est incomplète Raison : pas d'exemple |
Voir aussi
(C++26) |
obtient les annotations applicables à l'entité réfléchie (fonction) |
(C++26) |
obtient les annotations applicables à l'entité réfléchie et ayant le type spécifié (fonction) |