std::meta::reflect_constant_array
来自 zh.cppreference.net
| 定义于头文件 <meta>
|
||
template< ranges::input_range R >
consteval std::meta::info reflect_constant_array( R&& r );
|
(C++26 起) | |
返回一个表示数组对象的反射,该数组对象的元素是 r 的对应元素。
结果对象是一个 模板参数对象:它具有静态存储期,且具有模板实参等价内容的范围对应于同一个对象。
如果 r 的大小不为零,则结果数组对象是一个 可能非唯一对象。
令 U 为 ranges::range_value_t<R> 且 T 为 std::remove_all_extents_t<U>。
如果以下任意条件为真,则程序非良构:
T不是结构类型。T不满足 copy_constructible。U不是数组类型,且std::is_constructible_v<T, ranges::range_reference_t<R>>为 false。
参数
| r | - | 一个 input_range |
返回值
如果 r 的大小不为零,则返回一个反射,表示类型为 的模板参数对象const T[N](其中 N 是 r 的大小)。模板参数对象的每个元素与以下值模板实参等价:
std::meta::reflect_constant_array(*it)如果U是数组类型;std::meta::reflect_constant(static_cast<T>(*it))否则;
其中 it 是指向 r 对应元素的迭代器。
否则(r 的大小为零),返回一个反射,表示以 const std::array<T, 0> 初始化的类型为 {} 的模板参数对象。
异常
抛出由以下操作抛出的任何异常:
- 对
r或r的迭代器或哨位的操作; - 上述描述的
std::meta::reflect_constant的任何参数或std::meta::reflect_constant_array的任何调用。
如果 的任何调用将通过异常退出,则抛出 std::meta::exceptionstd::meta::reflect_constant。
注解
std::meta::reflect_constant_array 的结果适用于与 std::meta::substitute 配合使用。如果调用者需要静态数组的 std::span 而不是反射值,那么 std::define_static_array 通常更合适。
示例
| 本节未完成 原因:暂无示例 |
参阅
(C++26) |
将编译时数组提升至静态存储,返回静态数组的 span (函数模板) |
(C++26) |
将编译时字符串提升至静态存储,返回表示静态字符串的反射 (函数模板) |
(C++26) |
返回表示值或模板参数对象的反射,适用于作为常量模板实参 (函数模板) |