std::meta::parameters_of
Определено в заголовке <meta> | ||
|---|---|---|
consteval std::vector<std::meta::info> parameters_of( std::meta::info r ); | (начиная с C++26) |
Если r представляет функцию, возвращает вектор, содержащий отражения её параметров. Если r представляет тип функции, возвращает вектор, содержащий отражения её типов параметров.
В обоих случаях элементы вектора расположены в том же порядке, в котором указаны параметры.
Параметры
| r | - | отражение, представляющее функцию или тип функции |
Возвращаемое значение
std::vector отражений.
Исключения
Выбрасывает std::meta::exception, если r не представляет функцию или тип функции.
Примечания
Для отражения параметра функции можно запросить тип параметра, идентификатор (если есть) и список аннотаций. Чтобы получить значение переменной-параметра внутри тела функции, см. std::meta::variable_of.
Тип параметра (возвращаемый std::meta::type_of) не имеет cv-квалификаторов, что может отличаться от типа соответствующей переменной:
void f(const int x)
{
constexpr auto rp = std::meta::parameters_of(^^f)[0];
static_assert(std::meta::type_of(rp) == ^^int);
constexpr auto rv = std::meta::variable_of(rp);
static_assert(&[:rv:] == &x);
static_assert(std::meta::type_of(rv) == ^^const int);
}
Пример
См. также
|
(C++26) | получает переменную, соответствующую отражённому параметру функции в её определении (функция) |
|
(C++26) | получает тип возвращаемого значения отражённой функции (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/meta/parameters_of