Namespaces
Variants

std::meta::type_of

Von de.cppreference.net
< cpp | meta
 
 
 
Reflexionsbibliothek
 
Reflexionstypen und -abfragen
Reflexionsabfragen
Reflexionslayoutabfragen
Typeigenschaften
Typ-Eigenschaftsabfragen
 
Definiert in Header <meta>
consteval std::meta::info type_of( std::meta::info r );
(seit C++26)

Gibt eine Reflexion zurück, die den Typ von dem darstellt, was r repräsentiert.

Formell:

  • Falls r einen Funktionsparameter repräsentiert (siehe std::meta::parameters_of), wird eine Reflexion des entsprechenden Typs in der Parameter-Typ-Liste der Funktion zurückgegeben.
  • Falls r einen Wert, ein Objekt, eine Variable, eine Funktion, ein nicht-statisches Datenmember oder ein unbenanntes Bitfeld repräsentiert, wird eine Reflexion des Typs von dem, was r repräsentiert, zurückgegeben.
  • Falls r eine Annotation repräsentiert, wird std::meta::type_of(std::meta::constant_of(r)) zurückgegeben.
  • Falls r einen Enumerator eines Aufzählungstyps E  repräsentiert:
  • falls type_of nach der Definition von E  aufgerufen wird, wird eine Reflexion von E  zurückgegeben;
  • andernfalls (type_of wird innerhalb der Definition von E  aufgerufen) wird eine Reflexion eines Ganzzahltyps zurückgegeben (welcher der Typ des Enumerators innerhalb der Aufzählungsdefinition ist).
  • Falls r eine direkte Basisklassenbeziehung repräsentiert (d.h. ein Element von std::meta::bases_of(x, ctx)), wird eine Reflexion der Basisklasse in der Beziehung zurückgegeben.
  • Falls r eine Datenmemberbeschreibung repräsentiert (d.h. einen von std::meta::data_member_spec zurückgegebenen Wert), wird eine Reflexion des Typs in der Beschreibung zurückgegeben.

Parameter

r - eine Reflexion von etwas, das einen Typ hat

Rückgabewert

Der Typ von dem, was r repräsentiert.

Ausnahmen

Wirft std::meta::exception, es sei denn, das, was r repräsentiert, hat einen Typ. Das heißt, r muss eines der folgenden repräsentieren:

  • Wert
  • Annotation
  • Objekt
  • Variable
  • Funktion, deren Typ keinen nicht deduzierten Platzhaltertyp enthält und die kein Konstruktor oder Destruktor ist
  • Enumerator
  • nicht-statisches Datenmember
  • unbenanntes Bitfeld
  • direkte Basisklassenbeziehung
  • Datenmemberbeschreibung
  • Funktionsparameter

Beispiel

Siehe auch

(C++26)
prüft, ob die Reflexion einen Typ repräsentiert
(Funktion)