std::experimental::reflect::ObjectSequence
From cppreference.com
< cpp | experimental | reflect
Defined in header <experimental/reflect>
|
||
template< class T > concept ObjectSequence = Object<T> && /* see below */; |
(reflection 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
Run this code
#include<type_traits> #include<tuple> #include<cmath> #include<experimental/reflect> 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>>; 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, ""); }
See also
This section is incomplete Reason: templatization |