std::meta::reflect_constant_array
来自cppreference.com
| 在标头 <meta> 定义
|
||
| |
(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::reflect_constant 调用通过异常退出时,抛出 std::meta::exception。
注解
std::meta::reflect_constant_array 的结果适用于 std::meta::substitute。如果调用方想要的是静态数组上的 而非反射值,那么通常 std::define_static_array 更为合适。
示例
| 本节未完成 原因:暂无示例 |
参阅
(C++26) |
将编译期数组提升为静态存储,返回静态数组的跨度。 (函数模板) |
(C++26) |
将编译期字符串提升为静态存储,返回表示该静态字符串的反射。 (函数模板) |
(C++26) |
返回表示某个值或模板形参对象的反射,适合用作常量模板实参 (函数模板) |