Namespaces
Variants

std::meta::template_arguments_of

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>
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 A es un tipo o un alias de tipo, R representa el tipo.
  • De otro modo, si A es una plantilla de clase, plantilla de variable, concepto o plantilla de alias, R representa la plantilla.
  • De otro modo (A es un argumento de plantilla no tipo), sea P el parámetro de plantilla correspondiente.
  • Si P tiene tipo de referencia, R representa el objeto o función al que se refiere A.
  • Si P tiene tipo de clase, R representa el objeto parámetro de plantilla correspondiente.
  • De otro modo, R representa el valor de A.

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

#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
comprueba si la entidad reflejada se produce sustituyendo argumentos de plantilla en una plantilla
(función)