std::meta::template_arguments_of
De es.cppreference.net
| Definido en el encabezado <meta>
|
||
consteval std::vector<std::meta::info> template_arguments_of( std::meta::info r );
|
(desde C++26) | |
Devuelve un vector que contiene reflexiones de los argumentos de plantilla utilizados para instanciar la entidad representada por r, en el orden en que aparecen en la lista de argumentos de plantilla.
Para un argumento de plantilla dado A, el valor de reflexión correspondiente R se determina de la siguiente manera:
- Si
Aes un tipo o un alias de tipo,Rrepresenta el tipo. - De otro modo, si
Aes una plantilla de clase, plantilla de variable, concepto o plantilla de alias,Rrepresenta la plantilla. - De otro modo (
Aes un argumento de plantilla no tipo), seaPel parámetro de plantilla correspondiente.
- Si
Ptiene tipo de referencia,Rrepresenta el objeto o función al que se refiereA. - Si
Ptiene tipo de clase,Rrepresenta el objeto parámetro de plantilla correspondiente. - De otro modo,
Rrepresenta el valor deA.
- Si
Parámetros
| r | - | un valor de reflexión |
Valor de retorno
Un vector que contiene reflexiones de los argumentos de plantilla de lo que r representa.
Excepciones
Lanza std::meta::exception a menos que std::meta::has_template_arguments(r) sea true (es decir, r representa una entidad instanciada a partir de una plantilla).
Ejemplo
Ejecutar este código
#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() {}
Véase también
Plantilla:cpp/meta/dsc is template(C++26) |
comprueba si la entidad reflejada se produce sustituyendo argumentos de plantilla en una plantilla (función) |