std::experimental::reflect::ObjectSequence
来自cppreference.com
| 在标头 <experimental/reflect> 定义
|
||
| |
(反射 TS) | |
ObjectSequence 概念为元对象序列类型所满足。
元对象序列类型是从生成序列的元对象操作(如 get_data_members)获得的元对象类型。元对象序列类型中的每个元素均为元对象类型。
示例
| 在标头 <experimental/reflect> 定义
|
||
| |
(反射 TS) | |
The ObjectSequence concept is satisfied by meta-object sequence types.
A meta-object sequence type is a meta-object type that is obtained from a meta-object operation that generates a sequence, e.g. get_data_members. Each element of a meta-object sequence type is a meta-object type.
Example
运行此代码
#include<cmath>
#include<experimental/reflect>
#include<tuple>
#include<type_traits>
namespace reflect = std::experimental::reflect;
template<reflect::Typed... Ms>
using tuple_from_seq_t = std::tuple<reflect::get_reflected_type_t<
reflect::get_type_t<Ms>>...>;
template<reflect::Record T>
using collect_tuple = reflect::unpack_sequence_t<
tuple_from_seq_t,
reflect::get_data_members_t<T>>;
int main()
{
static_assert(reflect::ObjectSequence<
reflect::get_data_members<reflexpr(std::div_t)>>, "");
static_assert(std::is_same<collect_tuple<reflexpr(std::div_t)>,
std::tuple<int, int>>::value, "");
}
参阅
| 本节未完成 原因:模板化 |