std::meta::has_identifier
Von de.cppreference.net
| Definiert in Header <meta>
|
||
consteval bool has_identifier( std::meta::info r );
|
(seit C++26) | |
Bestimmt, ob das, was r darstellt, einen zugehörigen Bezeichner (einschließlich eines Literal-Suffix-Bezeichners) hat.
Formell:
- Wenn
reine Entität mit einem typedef-Namen für Verknüpfungszwecke darstellt, wirdtruezurückgegeben. - Andernfalls, wenn
reine unbenannte Klasse, Enumeration, Variable, Bitfeld oder einen unbenannten Namespace darstellt, wirdfalsezurückgegeben. - Andernfalls, wenn
reinen Typalias darstellt, wird!std::meta::has_template_arguments(r)zurückgegeben. - Andernfalls, wenn
reinen Typ darstellt, wirdtruezurückgegeben, wenn:
reinen cv-unqualifizierten Klassentyp darstellt undstd::meta::has_template_arguments(r)falseist, oderreinen cv-unqualifizierten Enumerationstyp darstellt.
- Andernfalls, wenn
reine Funktion darstellt, wirdtruezurückgegeben, wennstd::meta::has_template_arguments(r)falseist und die Funktion kein Konstruktor, Destruktor, Operatorfunktion oder Konvertierungsfunktion ist. - Andernfalls, wenn
reine Schablone (Template) darstellt, wirdtruezurückgegeben, wenn die Schablone keine Konstruktorschablone, Operatorfunktionsschablone oder Konvertierungsfunktionsschablone ist. - Andernfalls, wenn
reinen Funktionsparameter einer Funktion darstellt, die aus einer Funktionsschablone instanziiert wurde, und der Parameter ein Element eines Funktionsparameterpakets ist, wirdfalsezurückgegeben. - Andernfalls, wenn
reinen FunktionsparameterPeiner FunktionFdarstellt, dann seiSdie Menge der Deklarationen, die explizite Instantiierungen ignorieren, die von einem Punkt im Auswertungskontext aus erreichbar sind und die entwederFoder eine Schablonenfunktion, von derFeine Spezialisierung ist, deklarieren;truewird zurückgegeben, wenn
- es eine Deklaration
DinSgibt, die einen NamenNfür entwederPoder den Parameter, derPin der Schablonenfunktion entspricht, dieDdeklariert, einführt, und - keine Deklaration in
Sdies unter Verwendung eines anderen Namens alsNtut.
- es eine Deklaration
void fun(int);
constexpr std::meta::info r = parameters_of(^^fun)[0];
static_assert(!has_identifier(r));
void fun(int x);
static_assert(has_identifier(r));
void fun(int x);
static_assert(has_identifier(r));
void poison() {
void fun(int y);
}
static_assert(!has_identifier(r));
- Andernfalls, wenn
reine Variable darstellt, wirdfalsezurückgegeben, wenn entweder die Variable einem Element eines Funktionsparameterpakets entspricht oderstd::meta::has_template_arguments(r)trueist, andernfallstruezurückgegeben. - Andernfalls, wenn
reine strukturierte Bindung darstellt, wirdfalsezurückgegeben, wenn die strukturierte Bindung ein Element eines strukturierten Bindungspakets ist, odertrueandernfalls. - Andernfalls, wenn
reinen Enumerator, ein nicht-statisches Datenmitglied, einen Namespace oder einen Namespace-Alias darstellt, wirdtruezurückgegeben. - Andernfalls, wenn
reine direkte Basisklassenbeziehung darstellt, wirdstd::meta::has_identifier(std::meta::type_of(r))zurückgegeben. - Andernfalls, wenn
reine Datenmitgliedsbeschreibung (T, N, A, W, NUA, ANN) darstellt, wirdtruezurückgegeben, wenn der Name N der Beschreibung nicht ⊥ ist. - Andernfalls wird
falsezurückgegeben.
Parameter
| r | - | ein Reflexionswert |
Rückgabewert
truetrue, wenn das, was r darstellt, einen Bezeichner hat, andernfalls false false.
Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
Siehe auch
(C++26) |
wandelt einen meta::operators-Enumerator in seinen symbolischen Namen um (Funktion) |
(C++26) |
wenn die reflektierte Entität einen Bezeichner hat, erhält seinen Namen (Funktion) |
| erhält eine Zeichenkette, die zur Identifizierung der reflektierten Entität geeignet ist (Funktion) |