Namespaces
Variants

Reflexionsbibliothek (seit C++26)

Von de.cppreference.net
< cpp | meta
 
 
 
Reflexionsbibliothek
 
Reflexionstypen und -abfragen
Reflexionsabfragen
Reflexions-Layout-Abfragen
Typeigenschaften
Typeigenschaftsabfragen
 

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:

  • dem Reflexionsoperator ^^
  • den Spleißspezifizierern [: ... :]

Reflexionsbibliothek

Template:cpp/meta/dsc is templateTemplate:cpp/meta/dsc is function templateTemplate:cpp/meta/dsc is variable templateTemplate:cpp/meta/dsc is class templateTemplate:cpp/meta/dsc is alias templateTemplate:cpp/meta/dsc is conversion function templateTemplate:cpp/meta/dsc is operator function templateTemplate:cpp/meta/dsc is literal operator templateTemplate:cpp/meta/dsc is constructor templateTemplate:cpp/meta/dsc is conceptTemplate:cpp/meta/dsc member offsetTemplate:cpp/meta/dsc data member optionsTemplate:cpp/meta/dsc is void typeTemplate:cpp/meta/dsc is null pointer typeTemplate:cpp/meta/dsc is integral typeTemplate:cpp/meta/dsc is floating point typeTemplate:cpp/meta/dsc is array typeTemplate:cpp/meta/dsc is pointer typeTemplate:cpp/meta/dsc is lvalue reference typeTemplate:cpp/meta/dsc is rvalue reference typeTemplate:cpp/meta/dsc is member object pointer typeTemplate:cpp/meta/dsc is member function pointer typeTemplate:cpp/meta/dsc is enum typeTemplate:cpp/meta/dsc is union typeTemplate:cpp/meta/dsc is class typeTemplate:cpp/meta/dsc is function typeTemplate:cpp/meta/dsc is reflection typeTemplate:cpp/meta/dsc is reference typeTemplate:cpp/meta/dsc is arithmetic typeTemplate:cpp/meta/dsc is fundamental typeTemplate:cpp/meta/dsc is object typeTemplate:cpp/meta/dsc is scalar typeTemplate:cpp/meta/dsc is compound typeTemplate:cpp/meta/dsc is member pointer typeTemplate:cpp/meta/dsc is const typeTemplate:cpp/meta/dsc is volatile typeTemplate:cpp/meta/dsc is trivially copyable typeTemplate:cpp/meta/dsc is standard layout typeTemplate:cpp/meta/dsc is empty typeTemplate:cpp/meta/dsc is polymorphic typeTemplate:cpp/meta/dsc is abstract typeTemplate:cpp/meta/dsc is final typeTemplate:cpp/meta/dsc is aggregate typeTemplate:cpp/meta/dsc is structural typeTemplate:cpp/meta/dsc is signed typeTemplate:cpp/meta/dsc is unsigned typeTemplate:cpp/meta/dsc is bounded array typeTemplate:cpp/meta/dsc is unbounded array typeTemplate:cpp/meta/dsc is scoped enum typeTemplate:cpp/meta/dsc is constructible typeTemplate:cpp/meta/dsc is default constructible typeTemplate:cpp/meta/dsc is copy constructible typeTemplate:cpp/meta/dsc is move constructible typeTemplate:cpp/meta/dsc is assignable typeTemplate:cpp/meta/dsc is copy assignable typeTemplate:cpp/meta/dsc is move assignable typeTemplate:cpp/meta/dsc is swappable with typeTemplate:cpp/meta/dsc is swappable typeTemplate:cpp/meta/dsc is destructible typeTemplate:cpp/meta/dsc is trivially constructible typeTemplate:cpp/meta/dsc is trivially default constructible typeTemplate:cpp/meta/dsc is trivially copy constructible typeTemplate:cpp/meta/dsc is trivially move constructible typeTemplate:cpp/meta/dsc is trivially assignable typeTemplate:cpp/meta/dsc is trivially copy assignable typeTemplate:cpp/meta/dsc is trivially move assignable typeTemplate:cpp/meta/dsc is trivially destructible typeTemplate:cpp/meta/dsc is nothrow constructible typeTemplate:cpp/meta/dsc is nothrow default constructible typeTemplate:cpp/meta/dsc is nothrow copy constructible typeTemplate:cpp/meta/dsc is nothrow move constructible typeTemplate:cpp/meta/dsc is nothrow assignable typeTemplate:cpp/meta/dsc is nothrow copy assignable typeTemplate:cpp/meta/dsc is nothrow move assignable typeTemplate:cpp/meta/dsc is nothrow swappable with typeTemplate:cpp/meta/dsc is nothrow swappable typeTemplate:cpp/meta/dsc is nothrow destructible typeTemplate:cpp/meta/dsc is implicit lifetime typeTemplate:cpp/meta/dsc has virtual destructorTemplate:cpp/meta/dsc has unique object representationsTemplate:cpp/meta/dsc reference constructs from temporaryTemplate:cpp/meta/dsc reference converts from temporaryTemplate:cpp/meta/dsc rankTemplate:cpp/meta/dsc extentTemplate:cpp/meta/dsc is same typeTemplate:cpp/meta/dsc is base of typeTemplate:cpp/meta/dsc is virtual base of typeTemplate:cpp/meta/dsc is convertible typeTemplate:cpp/meta/dsc is nothrow convertible typeTemplate:cpp/meta/dsc is layout compatible typeTemplate:cpp/meta/dsc is pointer interconvertible base of typeTemplate:cpp/meta/dsc is invocable typeTemplate:cpp/meta/dsc is invocable r typeTemplate:cpp/meta/dsc is nothrow invocable typeTemplate:cpp/meta/dsc is nothrow invocable r typeTemplate:cpp/meta/dsc remove constTemplate:cpp/meta/dsc remove volatileTemplate:cpp/meta/dsc remove cvTemplate:cpp/meta/dsc add constTemplate:cpp/meta/dsc add volatileTemplate:cpp/meta/dsc add cvTemplate:cpp/meta/dsc remove referenceTemplate:cpp/meta/dsc add lvalue referenceTemplate:cpp/meta/dsc add rvalue referenceTemplate:cpp/meta/dsc make signedTemplate:cpp/meta/dsc make unsignedTemplate:cpp/meta/dsc remove extentTemplate:cpp/meta/dsc remove all extentsTemplate:cpp/meta/dsc remove pointerTemplate:cpp/meta/dsc add pointerTemplate:cpp/meta/dsc remove cvrefTemplate:cpp/meta/dsc decayTemplate:cpp/meta/dsc common typeTemplate:cpp/meta/dsc common referenceTemplate:cpp/meta/dsc underlying typeTemplate:cpp/meta/dsc invoke resultTemplate:cpp/meta/dsc unwrap referenceTemplate:cpp/meta/dsc unwrap ref decayTemplate:cpp/meta/dsc tuple sizeTemplate:cpp/meta/dsc tuple elementTemplate:cpp/meta/dsc is applicable typeTemplate:cpp/meta/dsc is nothrow applicable typeTemplate:cpp/meta/dsc apply resultTemplate:cpp/meta/dsc variant sizeTemplate:cpp/meta/dsc variant alternativeTemplate:cpp/meta/dsc type order
Definiert in Header <meta>
(C++26)
der Typ von Reflexionswerten
(typedef)
Ausnahme, die von Reflexionsfunktionen ausgelöst wird
(class)
Beförderung von Kompilierzeitspeicher in statischen Speicher
befördert eine Zeichenkette zur Kompilierzeit in statischen Speicher und gibt eine Reflexion zurück, die die statische Zeichenkette darstellt
(function template)
befördert ein Array zur Kompilierzeit in statischen Speicher und gibt eine Reflexion zurück, die das statische Array darstellt
(function template)
befördert eine Zeichenkette zur Kompilierzeit in statischen Speicher und gibt einen Zeiger auf das erste Zeichen der statischen Zeichenkette zurück
(function template)
befördert ein Array zur Kompilierzeit in statischen Speicher und gibt eine Spanne des statischen Arrays zurück
(function template)
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)
identifiziert den durch die Reflexion dargestellten Operator
(function)
konvertiert einen meta::operators-Enumerator in seinen symbolischen Namen
(function)
Reflexionsnamen und -positionen
prüft, ob die Reflexion eine Entität mit einem Bezeichner darstellt
(function)
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)
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)
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)
prüft, ob die Reflexion eine virtuelle Member-Funktion oder eine virtuelle Basis-Klasse darstellt
(function)
prüft, ob die Reflexion eine rein virtuelle Member-Funktion darstellt
(function)
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)
prüft, ob die Reflexion eine gelöschte Funktion darstellt
(function)
prüft, ob die Reflexion eine standardmäßig definierte Funktion darstellt
(function)
prüft, ob die Reflexion eine benutzerdefinierte Funktion darstellt
(function)
prüft, ob die Reflexion eine benutzerdeklarierte Funktion darstellt
(function)
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
(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
(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
(C++26)
prüft, ob die reflektierte Entität ein Konstruktor dieser Art ist
(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
(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
(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)
(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)
(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)
(C++26)
gibt den Offset eines (Member- oder Basis-)Subobjekts relativ zu seiner umschließenden Klasse zurück
(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)
(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)
(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
(C++26)
ermittelt eine Reflexion des Ergebnisses der Ersetzung reflektierter Argumente im reflektierten Template
(function template)
(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)
(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
(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.

Grund: Kein Beispiel