std::meta::bases_of
| 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
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
Siehe auch
(C++26) |
prüft, ob die Reflexion eine direkte Basisklassenbeziehung darstellt (Funktion) |