Namespaces
Variants

std::meta::reflect_constant_array

Von de.cppreference.net
< cpp | meta
 
 
 
Reflexionsbibliothek
 
Reflexionstypen und -abfragen
Reflexionsabfragen
Reflexionslayoutabfragen
Typeigenschaften
Typeigenschaftsabfragen
 
Definiert im Header <meta>
template< ranges::input_range R >
consteval std::meta::info reflect_constant_array( R&& r );
(seit C++26)

Gibt eine Reflexion zurück, die ein Array-Objekt darstellt, dessen Elemente die entsprechenden Elemente von r sind.

Das resultierende Objekt ist ein Template-Parameter-Objekt: es hat eine statische Speicherdauer, und Bereiche mit template-argument-äquivalenten Inhalten entsprechen demselben Objekt.

Wenn die Größe von r nicht Null ist, ist das resultierende Array-Objekt ein potenziell nicht eindeutiges Objekt.

Sei U sei ranges::range_value_t<R> und T sei std::remove_all_extents_t<U>.

Das Programm ist fehlerhaft, wenn eine der folgenden Bedingungen zutrifft:

Parameter

r - ein input_range

Rückgabewert

Wenn die Größe von r nicht Null ist, eine Reflexion, die ein Template-Parameter-Objekt vom Typ const T[N] (wobei N die Größe von r). Jedes Element des Template-Parameter-Objekts ist template-argument-äquivalent zu:

  • std::meta::reflect_constant_array(*it) falls U ein Array-Typ ist;
  • std::meta::reflect_constant(static_cast<T>(*it)) andernfalls;

wobei it ein Iterator zum entsprechenden Element von r ist.

Andernfalls (die Größe von r ist Null), eine Reflexion, die das Template-Parameter-Objekt vom Typ const std::array<T, 0> initialisiert mit {} darstellt.

Ausnahmen

Wirft jede Ausnahme, die von Folgendem geworfen wird:

  • eine Operation auf r oder auf Iteratoren oder Sentinels von r;
  • jedes Argument von std::meta::reflect_constant oder jeder Aufruf von std::meta::reflect_constant_array wie oben beschrieben.

Wirft std::meta::exception falls ein Aufruf von std::meta::reflect_constant über eine Ausnahme beendet würde.

Hinweise

Das Ergebnis von std::meta::reflect_constant_array ist zur Verwendung mit std::meta::substitute geeignet. Wenn der Aufrufer einen std::span eines statischen Arrays im Gegensatz zu einem Reflexionswert wünscht, ist std::define_static_array normalerweise besser geeignet.

Beispiel

Siehe auch

wandelt ein Kompilierzeit-Array in statischen Speicher um und gibt einen Span des statischen Arrays zurück
(Funktionstemplate)
wandelt eine Kompilierzeit-Zeichenkette in statischen Speicher um und gibt eine Reflexion zurück, die die statische Zeichenkette darstellt
(Funktionstemplate)
gibt eine Reflexion zurück, die einen Wert oder ein Template-Parameter-Objekt darstellt, geeignet zur Verwendung als konstantes Template-Argument
(Funktionstemplate)