Spec-Zone.ru › C++

std::meta::template_arguments_of

Определён в заголовочном файле <meta>
consteval std::vector<std::meta::info> template_arguments_of( std::meta::info r );
(начиная с C++26)

Возвращает вектор, содержащий отражения аргументов шаблона, использованных для создания экземпляра сущности, представленной r, в порядке их появления в списке аргументов шаблона.

Для заданного аргумента шаблона A соответствующее значение отражения R определяется следующим образом:

  • Если A является типом или псевдонимом типа, R представляет тип.
  • Иначе, если A является шаблоном класса, шаблоном переменной, концептом или шаблоном псевдонима, R представляет шаблон.
  • Иначе (A является нетиповым аргументом шаблона) пусть P будет соответствующим параметром шаблона.
    • Если P имеет ссылочный тип, R представляет объект или функцию, на которые ссылается A.
    • Если P имеет тип класса, R представляет соответствующий объект параметра шаблона.
    • Иначе R представляет значение A.

Параметры

r - значение отражения

Возвращаемое значение

Вектор, содержащий отражения аргументов шаблона того, что представляет r.

Исключения

Выбрасывает std::meta::exception, если только std::meta::has_template_arguments(r) не является true (то есть r не представляет сущность, созданную из шаблона).

Пример

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

См. также

is_template
(C++26)
проверяет, является ли отражённая сущность шаблоном
(функция)
has_template_arguments
(C++26)
проверяет, создана ли отражённая сущность подстановкой аргументов шаблона в шаблон
(функция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/meta/template_arguments_of

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API