Namespaces
Variants

std::meta::can_substitute

Von de.cppreference.net
< cpp | meta
 
 
 
Reflektionsbibliothek
 
Reflektionstypen und -abfragen
Reflektionsabfragen
Reflektionslayout-Abfragen
Typeigenschaften
Abfragen von Typeigenschaften
 
Definiert in Header <meta>
template< std::meta::reflection_range R = std::initializer_list<std::meta::info> >
consteval bool can_substitute( std::meta::info templ, R&& arguments );
(seit C++26)

Sei Z die durch templ dargestellte Vorlage, Args... bezeichne die Werte, Typen oder Vorlagen, die durch aufeinanderfolgende Elemente von arguments dargestellt werden, ermittelt, ob Z<Args...> eine gültige template-id ist.

Gibt true zurück, wenn Z<Args...> gültig ist und keine Funktion mit nicht deduziertem Platzhalter-Rückgabetyp benennt; andernfalls wird false zurückgegeben.

Parameter

templ - eine Reflektion einer Vorlage
arguments - ein Bereich von Reflektionen

Rückgabewert

Ein boolescher Wert, der angibt, ob die Substitution gültig ist.

Ausnahmen

Wirft std::meta::exception, es sei denn, templ stellt eine Vorlage dar und jedes Element von arguments stellt ein als Vorlagenargument geeignetes Konstrukt dar.

Hinweise

Wenn das Bilden von Z<Args...> zu einem Fehler außerhalb des unmittelbaren Kontextes führt, ist das Programm fehlerhaft.

Beispiel

#include <meta>
#include <tuple>

static_assert(std::meta::can_substitute(^^std::tuple, {^^void}));
static_assert(can_substitute(^^std::tuple, {^^int, ^^int})); // using argument-dependent lookup
static_assert(!can_substitute(^^std::tuple, {std::meta::reflect_constant(42)}));

consteval
{
    try
    {
        can_substitute(^^std::tuple, {^^::}); // Throws std::meta::exception
                                              // the global namespace cannot be a template arg
    } catch (std::meta::exception&) {}
}

int main() {}

Siehe auch

erhält eine Reflektion des Ergebnisses der Substitution reflektierter Argumente in der reflektierten Vorlage
(Funktionstemplate)
gibt eine Reflektion zurück, die einen Wert oder ein Vorlagenparameterobjekt darstellt, geeignet zur Verwendung als konstantes Vorlagenargument
(Funktionstemplate)
gibt eine Reflektion zurück, die ein Objekt darstellt, geeignet zur Verwendung als konstantes Vorlagenargument
(Funktionstemplate)
gibt eine Reflektion zurück, die eine Funktion darstellt, geeignet zur Verwendung als konstantes Vorlagenargument
(Funktionstemplate)