Namespaces
Variants

std::meta::bases_of

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

Gibt ein std::vector zurück, das die Reflexionen enthält, die den Basisklassenspezifizierern der Klasse entsprechen, die durch type dargestellt wird, gefiltert durch den Zugriffskontext ctx.

Sei C der Klassentyp, der durch std::meta::dealias(type) dargestellt wird. Jeder Reflexionswert b im Ergebnis repräsentiert eine zugängliche direkte Basisklassenbeziehung zwischen C und einer der Basisklassen von C. Die Zugänglichkeit wird wie durch std::meta::is_accessible(b, ctx) bestimmt. Die Reflexionswerte erscheinen in der Reihenfolge, in der die entsprechenden Basisklassen in der Basisklausel der Definition von C erscheinen.

Eine direkte Basisklassenbeziehung wird typischerweise als geordnetes Paar (D, B) dargestellt, wobei:

  • D die abgeleitete Klasse ist.
  • B die direkte Basisklasse ist, die durch einen Basisklassenspezifizierer in der Definition von D benannt wird.

Die Funktionen std::meta::parent_of und std::meta::type_of geben jeweils die abgeleitete Klasse und die Basisklasse der Beziehung zurück.

Parameter

type - ein Reflexionswert, der entweder einen vollständigen Klassentyp oder einen Typalias davon darstellt
ctx - ein Zugriffskontext

Rückgabewert

Ein std::vector von Reflexionswerten, der direkte Basisklassenbeziehungen darstellt.

Ausnahmen

Wirft std::meta::exception, es sei denn, std::meta::dealias(type) stellt einen Klassentyp dar, der von einem Punkt im Auswertungskontext aus vollständig ist.

Anmerkungen

Falls type einen Union-Typ darstellt, ist das Ergebnis ein leerer Vektor.

Beispiel

Siehe auch

(C++26)
prüft, ob die Reflexion eine direkte Basisklassenbeziehung
darstellt (Funktion)