Namespaces
Variants

Annotationen (seit C++26)

Von de.cppreference.net
 
 
C++-Sprache
Allgemeine Themen
Kontrollfluss
Bedingte Ausführungsanweisungen
if
Iterationsanweisungen (Schleifen)
for
range-for (C++11)
Sprunganweisungen
Funktionen
Funktionsdeklaration
Lambda-Funktionsausdruck
inline Spezifizierer
Dynamische Ausnahmespezifikationen (bis C++17*)
noexcept Spezifizierer (C++11)
Ausnahmen
Namensräume
Typen
Spezifizierer
const/volatile
decltype (C++11)
auto (C++11)
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Speicherdauer-Spezifizierer
Initialisierung
Ausdrücke
Alternative Darstellungen
Literale
Boolean - Integer - Gleitkomma
Zeichen - Zeichenkette - nullptr (C++11)
Benutzerdefiniert (C++11)
Hilfsmittel
Attribute (C++11)
Typen
typedef Deklaration
Typalias-Deklaration (C++11)
Cast-Operationen
Speicherzuweisung
Klassen
Klassenspezifische Funktionseigenschaften
explicit (C++11)
static

Besondere Memberfunktionen
Templates
Verschiedenes
 

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

Siehe auch

ermittelt die Annotationen, die auf die reflektierte Entität angewendet werden
(Funktion)
ermittelt die Annotationen, die auf die reflektierte Entität angewendet werden und den angegebenen Typ haben
(Funktion)