Namespaces
Variants

std::meta::can_substitute

De es.cppreference.net
< cpp | meta
 
 
 
Biblioteca de reflexión
 
Tipos de reflexión y consultas
Consultas de reflexión
Consultas de diseño de reflexión
Propiedades de tipo
Consultas de propiedades de tipo
 
Definido en el encabezado <meta>
template< std::meta::reflection_range R = std::initializer_list<std::meta::info> >
consteval bool can_substitute( std::meta::info templ, R&& arguments );
(desde C++26)

Sean Z la plantilla representada por templ, Args... los valores, tipos o plantillas representados por elementos sucesivos de arguments, determina si Z<Args...> es un template-id válido.

Devuelve true si Z<Args...> es válido y no nombra una función con tipo de retorno de marcador de posición no deducido; de lo contrario devuelve false.

Parámetros

templ - una reflexión de la plantilla
argumentos - un rango de reflexiones

Valor de retorno

Un valor booleano que indica si la sustitución es válida.

Excepciones

Lanza std::meta::exception a menos que templ represente una plantilla, y cada elemento de arguments represente una construcción adecuada como argumento de plantilla.

Notas

Si la formación de Z<Args...> conduce a un fallo fuera del contexto inmediato, el programa está mal formado.

Ejemplo

#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() {}

Véase también

obtiene una reflexión del resultado de sustituir argumentos reflejados en la plantilla reflejada
(plantilla de función)
devuelve una reflexión que representa un valor u objeto de parámetro de plantilla, adecuado para su uso como argumento de plantilla constante
(plantilla de función)
devuelve una reflexión que representa un objeto, adecuado para su uso como argumento de plantilla constante
(plantilla de función)
devuelve una reflexión que representa una función, adecuado para su uso como argumento de plantilla constante
(plantilla de función)