std::meta::can_substitute
Von de.cppreference.net
| 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
Diesen Code ausführen
#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
(C++26) |
erhält eine Reflektion des Ergebnisses der Substitution reflektierter Argumente in der reflektierten Vorlage (Funktionstemplate) |
(C++26) |
gibt eine Reflektion zurück, die einen Wert oder ein Vorlagenparameterobjekt darstellt, geeignet zur Verwendung als konstantes Vorlagenargument (Funktionstemplate) |
(C++26) |
gibt eine Reflektion zurück, die ein Objekt darstellt, geeignet zur Verwendung als konstantes Vorlagenargument (Funktionstemplate) |
(C++26) |
gibt eine Reflektion zurück, die eine Funktion darstellt, geeignet zur Verwendung als konstantes Vorlagenargument (Funktionstemplate) |