std::experimental::reflect::ObjectSequence
Von cppreference.com
< cpp | experimental | reflect
| Definiert im Namespace std::experimental::reflect |
||
| template< class T > Konzept ObjectSequence = Object<T> && /* siehe unten */; |
Ein Wert von mindestens 201902 zeigt an, dass die Reflection TS unterstützt wird. | |
Das ObjectSequence Konzept wird von Met ऑब्जेक्ट-Sequenz-Typen erfüllt.
Ein Metobjekt-Sequenz-Typ ist ein Metobjekt-Typ, der aus einer Metobjekt-Operation resultiert, die eine Sequenz erzeugt, z.B. get_data_members. Jedes Element eines Metobjekt-Sequenz-Typs ist ein Metobjekt-Typ.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#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, ""); }
[bearbeiten] Siehe auch
| Dieser Abschnitt ist unvollständig Grund: Templatisierung |