Namespaces
Variants

std::meta::identifier_of, std::meta::u8identifier_of

Von de.cppreference.net
< cpp | meta
 
 
 
Reflektionsbibliothek
 
Reflektionstypen und -abfragen
Reflektionsabfragen
Reflektionslayout-Abfragen
Typeigenschaften
Typeigenschaftsabfragen
 
Definiert in Header <meta>
consteval std::string_view identifier_of( std::meta::info r );
(1) (seit C++26)
consteval std::u8string_view u8identifier_of( std::meta::info r );
(2) (seit C++26)

Gibt den Bezeichner zurück, der mit dem von r dargestellten assoziiert ist.

1) Das Ergebnis ist eine Zeichenkette, die in der gewöhnlichen Literalkodierung kodiert ist.
2) Das Ergebnis ist eine UTF-8-Zeichenkette.

Die Ergebniszeichenkette wird wie folgt bestimmt:

  • Wenn r eine Entität mit einem typedef-Name für Bindungszwecke darstellt, wird dieser Name zurückgegeben.
  • Andernfalls, wenn r einen Literal-Operator oder eine Literal-Operator-Vorlage darstellt, wird sein Literalsuffix-Bezeichner zurückgegeben.
  • Andernfalls, wenn r einen Funktionsparameter P einer Funktion F darstellt, dann sei S die Menge der Deklarationen, die von einem Punkt im Auswertungskontext aus erreichbar sind und die entweder F oder eine Vorlagenfunktion, von der F eine Spezialisierung ist, deklarieren; es wird der Name zurückgegeben, der durch eine Deklaration in S für den Parameter eingeführt wurde, der P entspricht.
  • Andernfalls, wenn r eine Entität darstellt, wird ihr deklarierter Name zurückgegeben.
  • Andernfalls, wenn r eine direkte Basisklassenbeziehung darstellt, wird std::meta::identifier_of(std::meta::type_of(r)) oder std::meta::u8identifier_of(std::meta::type_of(r)) zurückgegeben.
  • Andernfalls, wenn r eine Datenelementbeschreibung (T, N, A, W, NUA, ANN) darstellt, wird der Name der Beschreibung N zurückgegeben.

Parameter

r - ein Reflektionswert

Rückgabewert

Der Bezeichner dessen, was r darstellt, wie oben beschrieben.

Ausnahmen

Wirft std::meta::exception, es sei denn, std::meta::has_identifier(r) ist true und die Ergebniszeichenkette ist in der entsprechenden Kodierung darstellbar.

Hinweise

Das Ergebnis V ist nullterminiert: V.data()[V.size()] ist garantiert '\0'. Jedes Element in V ist ein potenziell nicht eindeutiges Objekt mit statischer Speicherdauer, das in konstanten Ausdrücken verwendbar ist; ein Zeiger auf ein solches Element ist nicht geeignet zur Verwendung als Template-Argument für einen Nicht-Typ-Template-Parameter vom Zeigertyp.

Beispiel

Siehe auch

prüft, ob die Reflektion eine Entität darstellt, die einen Bezeichner hat
(Funktion)