std::meta::template_arguments_of
Von de.cppreference.net
| Definiert in Header <meta>
|
||
consteval std::vector<std::meta::info> template_arguments_of( std::meta::info r );
|
(seit C++26) | |
Gibt einen Vektor zurück, der Reflektionen der Vorlagenargumente enthält, die zur Instantiierung der durch r repräsentierten Entität verwendet wurden, in der Reihenfolge, in der sie in der Vorlagenargumentliste erscheinen.
Für ein gegebenes Vorlagenargument A wird der entsprechende Reflektionswert R wie folgt bestimmt:
- Falls
Aein Typ oder ein Typalias ist, repräsentiertRden Typ. - Andernfalls, falls
Aeine Klassenvorlage, Variablenvorlage, ein Konzept oder eine Aliasvorlage ist, repräsentiertRdie Vorlage. - Andernfalls (
Aist ein Nicht-Typ-Vorlagenargument) seiPder entsprechende Vorlagenparameter.
- Falls
Peinen Referenztyp hat, repräsentiertRdas Objekt oder die Funktion, auf dieAverweist. - Falls
Peinen Klassentyp hat, repräsentiertRdas entsprechende Vorlagenparameterobjekt. - Andernfalls repräsentiert
Rden Wert vonA.
- Falls
Parameter
| r | - | ein Reflektionswert |
Rückgabewert
Ein Vektor, der Reflektionen der Vorlagenargumente dessen enthält, was r repräsentiert.
Ausnahmen
Wirft std::meta::exception, es sei denn std::meta::has_template_arguments(r) ist true (d. h. r repräsentiert eine aus einer Vorlage instantiiierte Entität).
Beispiel
Dieses Programm ausführen
#include <meta>
#include <type_traits>
static_assert(template_arguments_of(^^std::void_t<int>)[0] == ^^int);
static_assert(template_arguments_of(^^std::enable_if<true>).size() == 2);
static_assert(template_arguments_of(^^std::enable_if<true>)[0] ==
std::meta::reflect_constant(true));
static_assert(template_arguments_of(^^std::enable_if<true>)[1] == ^^void);
int main() {}
Siehe auch
Template:cpp/meta/dsc is template(C++26) |
prüft, ob die reflektierte Entität durch Einsetzen von Vorlagenargumenten in eine Vorlage erzeugt wurde (Funktion) |