std::experimental::reflect:: ObjectSequence
From cppreference.net
<
cpp
|
experimental
|
reflect
C++
Experimental
| Technical Specification | ||||
| Filesystem library (filesystem TS) | ||||
| Library fundamentals (library fundamentals TS) | ||||
| Library fundamentals 2 (library fundamentals TS v2) | ||||
| Library fundamentals 3 (library fundamentals TS v3) | ||||
| Extensions for parallelism (parallelism TS) | ||||
| Extensions for parallelism 2 (parallelism TS v2) | ||||
| Extensions for concurrency (concurrency TS) | ||||
| Extensions for concurrency 2 (concurrency TS v2) | ||||
| Concepts (concepts TS) | ||||
| Ranges (ranges TS) | ||||
| Reflection (reflection TS) | ||||
| Mathematical special functions (special functions TR) | ||||
| Experimental Non-TS | ||||
| Pattern Matching | ||||
| Linear Algebra | ||||
| std::execution | ||||
| Contracts | ||||
| 2D Graphics |
Extensions for reflection
| Concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Meta-object operations | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definiert in Header
<experimental/reflect>
|
||
|
template
<
class
T
>
concept ObjectSequence = Object < T > && /* siehe unten */ ; |
(Reflection TS) | |
Das
ObjectSequence
-Konzept wird von Meta-Objekt-Sequenztypen erfüllt.
Ein Meta-Objekt-Sequenztyp ist ein Meta-Objekt-Typ, der von einer Meta-Objekt-Operation erzeugt wird, die eine Sequenz generiert, z.B.
get_data_members
. Jedes Element eines Meta-Objekt-Sequenztyps ist ein Meta-Objekt-Typ.
Beispiel
Diesen Code ausführen
#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, ""); }
Siehe auch
|
Dieser Abschnitt ist unvollständig
Grund: Templatisierung |