Namespaces
Variants

std::meta::members_of

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

Gibt einen std::vector zurück, der die Reflexionen der Member des Klassentyps oder Namensraums enthält, der durch r dargestellt wird, gefiltert nach dem Zugriffskontext ctx.

Jede Reflexion m im Ergebnis repräsentiert einen zugreifbaren Member, der eine geeignete Deklaration hat und darstellbar ist (siehe unten). Die Zugreifbarkeit wird bestimmt, als ob durch std::meta::is_accessible(m, ctx).

Sei Q der Klassentyp oder Namensraum, der durch r dargestellt wird.

Eine Deklaration ist geeignet, wenn sie alle folgenden Anforderungen erfüllt:

  • Sie befindet sich im Gültigkeitsbereich von Q. (Eine Funktionsdeklaration im Blockbereich ist beispielsweise nicht geeignet.)
  • Sie ist keine friend-Deklaration.
  • Sie ist nicht die Deklaration eines closure-Typs.
  • Sie ist nicht die Deklaration einer (partiellen oder vollständigen) Template-Spezialisierung.
  • Wenn Q ein Klassentyp ist, der kein closure-Typ ist, führt die Deklaration einen direkten Member von Q ein, der kein variant-Member einer verschachtelten anonymen Union von Q ist.
  • Wenn Q ein closure-Typ ist, führt die Deklaration einen Funktionsaufrufoperator oder ein Funktionsaufrufoperator-Template ein.

Es ist implementierungsdefiniert, ob Deklarationen anderer Member eines closure-Typs Q geeignet sind.

Nur Deklarationen vor dem members_of-Aufruf werden berücksichtigt.

Ein Member ist darstellbar, wenn es eines der folgenden ist:

  • ein Klassen- oder Aufzählungstyp
  • ein Typalias
  • ein Klassen-Template, Funktions-Template, Variablen-Template, Alias-Template oder Konzept
  • eine Variable oder Referenz, deren Typ keinen nicht deduzierten Platzhaltertyp
  • enthältFeine Funktion
  • für die:Fder Typ von
  • keinen nicht deduzierten Platzhaltertyp enthält;Fdie Constraints (falls vorhanden) von
  • erfüllt sind; undFwenn ein prospektiver Destruktor
  • ist, es der ausgewählte Destruktor ist
  • ein Datenmember
  • ein Namensraum

ein NamensraumaliasQDiese Funktion behandelt unbenannte Bitfelder, die im Gültigkeitsbereich von

deklariert sind, als Datenmember mit demselben Zugriff.

Siehe auch

r - eine Reflexion eines vollständigen Klassentyps oder Namensraums
ctx - ein Zugriffskontext

Rückgabewert

Ein std::vector von Reflexionswerten, der Klassenmember oder Namensraummember darstellt.

Ausnahmen

Wirft std::meta::exception, es sei denn, std::meta::dealias(r) repräsentiert entweder einen Klassentyp, der ab einem bestimmten Punkt im Evaluationskontext vollständig ist, oder einen Namensraum.

Beispiel

Siehe auch

(C++26)
erhält die zugreifbaren direkten Basisklassen der reflektierten Klasse
(Funktion)