std::meta::members_of
| 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
Qein Klassentyp ist, der kein closure-Typ ist, führt die Deklaration einen direkten Member vonQein, der kein variant-Member einer verschachtelten anonymen Union vonQist. - Wenn
Qein 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ält
Feine Funktion
- für die:
Fder Typ von - keinen nicht deduzierten Platzhaltertyp enthält;
Fdie Constraints (falls vorhanden) von - erfüllt sind; und
Fwenn ein prospektiver Destruktor
- für die:
- 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
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
Siehe auch
(C++26) |
erhält die zugreifbaren direkten Basisklassen der reflektierten Klasse (Funktion) |