Annotationen (seit C++26)
Informationen an Deklarationen anhängen, sodass die Reflexion sie beobachten kann.
Syntax
Die Liste der Annotationen wird in einem Attributspezifizierer eingeführt. Jede Annotation beginnt mit =.
= konstanter Ausdruck
|
|||||||||
Erklärung
Eine Annotation kann auf jede Deklaration eines Typs, Typalias, einer Variable, Funktion, eines Funktionsparameters mit Nicht-void-Typ, eines Namensraums, eines Enumerators, eines Basis-Spezifizierers oder eines nicht-statischen Datenmembers angewendet werden.
Sei E gleich std::meta::reflect_constant(expr) (wobei expr der konstante Ausdruck ist), E muss ein konstanter Ausdruck sein. Das Ergebnis von E kann durch Aufruf von std::meta::constant_of auf der Reflexion der Annotation beobachtet werden.
Annotationen sind stets voneinander verschieden, selbst wenn sie äquivalente Werte haben und auf dieselbe Deklaration angewendet werden.
[[=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);
Das Substituieren in einer Annotation ist kein unmittelbarer Kontext.
Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
Siehe auch
(C++26) |
ermittelt die Annotationen, die auf die reflektierte Entität angewendet werden (Funktion) |
(C++26) |
ermittelt die Annotationen, die auf die reflektierte Entität angewendet werden und den angegebenen Typ haben (Funktion) |