std::meta::parameters_of

来自cppreference.com
< cpp | meta
在标头 <meta> 定义
consteval std::vector<std::meta::info> parameters_of( std::meta::info r );
(C++26 起)

如果 r 表示一个函数,则返回一个包含其函数形参的反射的 vector。如果 r 表示一个函数类型,则返回一个包含其形参类型的反射的 vector

在这两种情况下,vector 中的元素都按照形参出现的顺序排列。

参数

r - 表示函数或函数类型的反射

返回值

一个包含反射的 std::vector

异常

如果 r 不表示函数或函数类型,则抛出 std::meta::exception

注解

可以查询函数形参的反射以获取形参的类型、标识符(如果有)以及标注列表。要获取函数体内形参变量的值,请参阅 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);
}

示例

参阅