std::meta::template_arguments_of
来自cppreference.com
| 在标头 <meta> 定义
|
||
| |
(C++26 起) | |
返回一个 vector,其中包含用于实例化 r 所表示实体的模板实参的反射,顺序与它们在模板实参列表中出现的顺序一致。
对于给定的模板实参 A,对应的反射值 R 按如下方式确定:
- 如果
A是类型或类型别名,则R表示该类型。 - 否则,如果
A是类模板、变量模板、概念或别名模板,则R表示该模板。 - 否则(
A是非类型模板实参),设P为对应的模板形参。
- 如果
P具有引用类型,则R表示A所引用的对象或函数。 - 如果
P具有类类型,则R表示对应的模板形参对象。 - 否则,
R表示A的值。
- 如果
参数
| r | - | 一个反射值 |
返回值
包含 r 所表示内容的模板实参的反射的 vector。
异常
除非 std::meta::has_template_arguments(r) 为 true(即 r 表示从模板实例化的实体),否则抛出 std::meta::exception。
示例
运行此代码
#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);