Reflexionsbibliothek (seit C++26)
Von de.cppreference.net
Die in diesem Abschnitt definierten Einrichtungen unterstützen reflektive Programmierung und ermöglichen es C++-Programmen, sowohl die Struktur des Programms selbst zu beobachten als auch Code zu generieren, der von diesen Beobachtungen abhängt.
Kernsprache
Die Reflexionsbibliothek arbeitet mit zwei Kernsprachmerkmalen zusammen:
Reflexionsbibliothek
| Dieser Abschnitt ist unvollständig |
Definiert in Header
<meta> | |
(C++26) |
der Typ von Reflexionswerten (typedef) |
(C++26) |
Ausnahme, die von Reflexionsfunktionen ausgelöst wird (class) |
Beförderung von Kompilierzeitspeicher in statischen Speicher | |
(C++26) |
befördert eine Zeichenkette zur Kompilierzeit in statischen Speicher und gibt eine Reflexion zurück, die die statische Zeichenkette darstellt (function template) |
(C++26) |
befördert ein Array zur Kompilierzeit in statischen Speicher und gibt eine Reflexion zurück, die das statische Array darstellt (function template) |
(C++26) |
befördert eine Zeichenkette zur Kompilierzeit in statischen Speicher und gibt einen Zeiger auf das erste Zeichen der statischen Zeichenkette zurück (function template) |
(C++26) |
befördert ein Array zur Kompilierzeit in statischen Speicher und gibt eine Spanne des statischen Arrays zurück (function template) |
(C++26) |
befördert einen Wert zur Kompilierzeit in statischen Speicher und gibt einen Zeiger auf das statische Objekt zurück (function template) |
Operatordarstellungen | |
(C++26) |
identifiziert überladbare Operatoren (enum) |
(C++26) |
identifiziert den durch die Reflexion dargestellten Operator (function) |
(C++26) |
konvertiert einen meta::operators-Enumerator in seinen symbolischen Namen (function) |
Reflexionsnamen und -positionen | |
(C++26) |
prüft, ob die Reflexion eine Entität mit einem Bezeichner darstellt (function) |
(C++26) |
Wenn die reflektierte Entität einen Bezeichner hat, wird ihr Name ermittelt (function) |
| ermittelt einen String, der zur Identifikation der reflektierten Entität geeignet ist (function) | |
(C++26) |
ermittelt die Quellposition der reflektierten Entität (function) |
Reflexionsabfragen | |
(C++26) |
ermittelt eine Reflexion des Typs der reflektierten Entität (function) |
(C++26) |
ermittelt eine Reflexion des Objekts der reflektierten Variablen (function) |
(C++26) |
ermittelt eine Reflexion des konstanten Werts der reflektierten Entität (function) |
| prüft, ob die Reflexion einen öffentlichen, geschützten oder privaten Member oder eine Basis-Klasse darstellt (function) | |
(C++26) |
prüft, ob die Reflexion eine virtuelle Member-Funktion oder eine virtuelle Basis-Klasse darstellt (function) |
(C++26) |
prüft, ob die Reflexion eine rein virtuelle Member-Funktion darstellt (function) |
(C++26) |
prüft, ob die Reflexion eine Member-Funktion darstellt, die eine andere Member-Funktion überschreibt (function) |
(C++26) |
prüft, ob die Reflexion eine finale Klasse oder finale Member-Funktion darstellt (function) |
(C++26) |
prüft, ob die Reflexion eine gelöschte Funktion darstellt (function) |
(C++26) |
prüft, ob die Reflexion eine standardmäßig definierte Funktion darstellt (function) |
(C++26) |
prüft, ob die Reflexion eine benutzerdefinierte Funktion darstellt (function) |
(C++26) |
prüft, ob die Reflexion eine benutzerdeklarierte Funktion darstellt (function) |
(C++26) |
prüft, ob die Reflexion eine Member-Funktion darstellt, die als explicit deklariert ist |
is_noexcept |
(C++26)prüft, ob die Reflexion eine noexcept -Funktion oder einen Funktionstyp darstellt |
is_bit_field |
(C++26)prüft, ob die Reflexion ein Bitfeld oder eine Datenmemberbeschreibung eines Bitfelds darstellt |
is_enumerator |
(C++26)prüft, ob die Reflexion einen Enumerator |
is_annotation |
(C++26)prüft, ob die Reflexion eine Annotation |
is_const |
(C++26) prüft, ob die Reflexion einen const-Typ oder einen Funktionstyp mit const-Qualifizierer darstellt |
is_volatile |
(C++26) prüft, ob die Reflexion einen volatile-Typ oder einen Funktionstyp mit volatile-Qualifizierer darstellt |
is_mutable_member |
(C++26)mutableprüft, ob die Reflexion einen nicht-statischen Datenmember darstellt |
is_rvalue_reference_qualified |
(C++26)prüft, ob die reflektierte Entität eine ref-qualifizierte Member-Funktion ist |
has_automatic_storage_duration |
(C++26)prüft, ob die reflektierte Entität eine Speicherdauer |
| (C++26)prüft, ob die reflektierte Entität eine Bindung | |
has_c_language_linkage |
(C++26)prüft, ob die reflektierte Entität "C"- Sprachbindungextern "C" hat () |
is_complete_type |
(C++26) prüft, ob die Reflexion einen vollständigen Typ darstellt |
is_enumerable_type |
(C++26) prüft, ob der reflektierte Typ seine Liste der Member vollständig definiert hat |
is_variable |
(C++26) prüft, ob die Reflexion eine Variable darstellt |
is_type |
(C++26) prüft, ob die Reflexion einen Typ darstellt |
is_namespace |
(C++26) prüft, ob die Reflexion einen Namensraum darstellt |
is_type_alias |
(C++26) prüft, ob die Reflexion einen Typ-Alias darstellt |
is_namespace_alias |
(C++26) prüft, ob die Reflexion einen Namensraum-Alias darstellt |
is_function |
(C++26) prüft, ob die Reflexion eine Funktion darstellt |
is_conversion_function |
(C++26)prüft, ob die Reflexion eine Konvertierungsfunktion |
is_operator_function |
(C++26)prüft, ob die Reflexion eine Operatorüberladung |
is_literal_operator |
(C++26)prüft, ob die Reflexion einen benutzerdefinierten Literal -Operator darstellt |
is_special_member_function |
(C++26)prüft, ob die Reflexion eine spezielle Member-Funktion |
is_move_constructor |
(C++26) prüft, ob die reflektierte Entität ein Konstruktor dieser Art ist |
is_move_assignment |
(C++26) prüft, ob die reflektierte Entität ein Zuweisungsoperator dieser Art ist |
is_destructor |
(C++26) prüft, ob die reflektierte Entität ein Destruktor ist |
is_function_parameter |
(C++26) prüft, ob die Reflexion einen Funktionsparameter darstellt |
is_explicit_object_parameter |
(C++26) prüft, ob die Reflexion einen expliziten Objektparameter darstellt |
has_default_argument |
(C++26) prüft, ob der reflektierte Funktionsparameter ein Standardargument hat |
is_vararg_function |
(C++26)prüft, ob die Reflexion eine Funktion oder einen Funktionstyp mit einem Ellipsenparameter |
is_value |
(C++26) prüft, ob die Reflexion einen (skalaren) Wert darstellt |
is_object |
(C++26) prüft, ob die Reflexion ein statisches Objekt darstellt |
is_structured_binding |
(C++26) prüft, ob die Reflexion eine strukturierte Bindung darstellt |
is_class_member |
(C++26) prüft, ob die Reflexion einen Klassenmember darstellt |
is_namespace_member |
(C++26) prüft, ob die Reflexion einen Namensraummember darstellt |
is_nonstatic_data_member |
(C++26) prüft, ob die Reflexion einen nicht-statischen Datenmember darstellt |
is_static_member |
(C++26) prüft, ob die Reflexion einen statischen Klassenmember darstellt |
is_base |
(C++26)prüft, ob die Reflexion eine direkte Basisklassenbeziehung |
has_default_member_initializer |
(C++26) prüft, ob der reflektierte nicht-statische Datenmember einen Standard-Memberinitialisierer hat |
has_parent |
(C++26) prüft, ob die reflektierte Entität in einem Gültigkeitsbereich enthalten ist |
parent_of |
(C++26) ermittelt den Gültigkeitsbereich, der die reflektierte Entität enthält |
dealias |
(C++26) ermittelt eine Reflexion der zugrunde liegenden Entität des reflektierten Typ-/Namensraum-Alias |
has_template_arguments |
(C++26) prüft, ob die reflektierte Entität durch Ersetzen von Template-Argumenten in einem Template erzeugt wurde |
template_of |
(C++26) ermittelt eine Reflexion des Templates, das zur Instanziierung der reflektierten Entität verwendet wurde |
template_arguments_of |
(C++26) ermittelt die Template-Argumente der reflektierten Entität |
parameters_of |
(C++26) ermittelt die Parameter der reflektierten Funktion |
variable_of |
(C++26) ermittelt die Variable des reflektierten Funktionsparameters in der Funktionsdefinition |
return_type_of |
(C++26) ermittelt den Rückgabetyp der reflektierten Funktion |
(function) | |
access_context |
(C++26)stellt einen Kontext für die Zugriffsprüfung |
is_accessible |
(C++26) prüft, ob ein Member in einem gegebenen Kontext zugänglich ist |
has_inaccessible_nonstatic_data_members |
(C++26) prüft, ob die reflektierte Klasse unzugängliche nicht-statische Datenmember hat |
has_inaccessible_bases |
(C++26) prüft, ob die reflektierte Klasse unzugängliche direkte Basisklassen hat |
has_inaccessible_subobjects |
(C++26) prüft, ob die reflektierte Klasse unzugängliche nicht-statische Datenmember oder direkte Basisklassen hat |
(function) | |
current_function |
(C++26) gibt eine Reflexion der umschließenden Funktion zurück |
current_class |
(C++26) gibt eine Reflexion der umschließenden Klasse zurück |
current_namespace |
(C++26) gibt eine Reflexion des umschließenden Namensraums zurück |
(function) | |
members_of |
(C++26) ermittelt die zugänglichen direkten Member der reflektierten Klasse oder des Namensraums |
bases_of |
(C++26) ermittelt die zugänglichen direkten Basen der reflektierten Klasse |
static_data_members_of |
(C++26) ermittelt die zugänglichen statischen Datenmember der reflektierten Klasse |
nonstatic_data_members_of |
(C++26) ermittelt die zugänglichen nicht-statischen Datenmember der reflektierten Klasse |
subobjects_of |
(C++26) ermittelt die zugänglichen Basisklassen-Subobjekte und nicht-statischen Datenmember der reflektierten Klasse |
enumerators_of |
(C++26) ermittelt die Enumeratoren des reflektierten Enum-Typs |
(function) | |
offset_of |
(C++26) gibt den Offset eines (Member- oder Basis-)Subobjekts relativ zu seiner umschließenden Klasse zurück |
size_of |
(C++26) gibt die Größe in Bytes des reflektierten Objekts oder Typs zurück |
alignment_of |
(C++26) gibt die Ausrichtung des reflektierten Objekts oder Typs zurück |
bit_size_of |
(C++26) gibt die Größe in Bits des reflektierten Objekts oder Typs zurück |
(function) | |
annotations_of |
(C++26) ermittelt die Annotationen, die auf die reflektierte Entität angewendet werden |
annotations_of_with_type |
(C++26) ermittelt die Annotationen, die auf die reflektierte Entität angewendet werden und den angegebenen Typ haben |
(function) | |
extract |
(C++26) extrahiert den Wert der reflektierten Entität |
(function template) | |
reflection_range |
(C++26) spezifiziert einen Bereich von Reflexionswerten |
can_substitute |
(C++26) prüft, ob die reflektierten Argumente im reflektierten Template ersetzt werden können |
substitute |
(C++26) ermittelt eine Reflexion des Ergebnisses der Ersetzung reflektierter Argumente im reflektierten Template |
(function template) | |
reflect_constant |
(C++26)gibt eine Reflexion zurück, die einen Wert oder ein Template-Parameter-Objekt darstellt, geeignet für die Verwendung als konstantes Template-Argument |
reflect_object |
(C++26) gibt eine Reflexion zurück, die ein Objekt darstellt, geeignet für die Verwendung als konstantes Template-Argument |
reflect_function |
(C++26) gibt eine Reflexion zurück, die eine Funktion darstellt, geeignet für die Verwendung als konstantes Template-Argument |
(function template) | |
data_member_spec |
(C++26) erzeugt eine Datenmemberbeschreibung zur Verwendung mit eingefügten Deklarationen |
is_data_member_spec |
(C++26) prüft, ob die Reflexion eine Datenmemberbeschreibung darstellt |
define_aggregate |
(C++26) definiert einen Aggregattyp aus einer Folge von Datenmemberbeschreibungen |
(function template) | |
Primäre Typkategorien | |
Zusammengesetzte Typkategorien | |
Typeigenschaften | |
Typeigenschaftsabfragen | |
Typbeziehungen | |
Konstant-Volatile-Modifikationen | |
Referenzmodifikationen | |
Vorzeichenmodifikationen | |
Array-Modifikationen | |
Zeigermodifikationen | |
Andere Transformationen | |
is_string_literal |
(C++26) prüft, ob ein Zeiger in ein Zeichenkettenliteral zeigt |
(function)
| AnmerkungenFeature-Test | -Makro | Wert | Std |
|---|---|---|---|
__cpp_lib_reflection |
202506L |
Merkmal | <(C++26)>meta : Unterstützung der Reflexionsbibliothek. |
constexpr-Ausnahmen als Fehlerbehandlung in der Reflexion.
| Beispiel Dieser Abschnitt ist unvollständig |