std::experimental::ranges:: tagged
Von cppreference.com
< cpp | experimental | ranges
| Definiert in Header <experimental/ranges/utility> |
||
| template< class Base, TagSpecifier... Tags > requires sizeof...(Tags) <= std::tuple_size<Base>::value |
(Ranges TS) | |
Die Klassenschablone tagged erweitert einen Tupel-ähnlichen Klassentyp Base, von dem sie öffentlich erbt, um einen Satz benannter Zugriffsfunktionen, die durch die Tag-Spezifizierer Tags... angegeben werden. Die Tags werden in Reihenfolge angewendet: der i-te Tag-Spezifizierer in Tags... entspricht dem i-ten Element des Tupels.
Die Tag-Spezifizierer in Tags... müssen eindeutig sein. Andernfalls ist das Verhalten undefiniert.
Es ist nicht möglich, eine Instanz von tagged über einen Zeiger auf eine andere Basis als Base zu löschen.
Inhalt |
[bearbeiten] Memberfunktionen
konstruiert ein tagged-Objekt(öffentliche Memberfunktion) | |
weist ein tagged-Objekt zu(öffentliche Memberfunktion) | |
tauscht den Inhalt zweier tagged-Objekte(öffentliche Memberfunktion) |
[bearbeiten] Benannte Elementzugriffsfunktionen
Für den N-ten Tag-Spezifizierer in Tags..., dessen zugehöriger Elementname name ist, stellt tagged Zugriffsfunktionen mit dem Namen name wie folgt bereit:
constexpr decltype(auto) name() & { return std::get<N>(*this); } constexpr decltype(auto) name() const & { return std::get<N>(*this); } constexpr decltype(auto) name() && { return std::get<N>(std::move(*this)); }
[bearbeiten] Nicht-Member-Funktionen
spezialisiert swap für tagged-Objekte(Funktion) |
[bearbeiten] Tupel-ähnlicher Zugriff
erhält die Größe eines tagged(Klassenschablonenspezialisierung) | |
erhält die Typen der Elemente eines tagged(Klassenschablonenspezialisierung) |
[bearbeiten] Siehe auch
| spezifiziert, dass ein Typ ein Tag-Specifier ist (concept) | |
| Alias-Vorlage für ein getaggtes std::pair (alias template) | |
Komfortfunktion zum Erstellen eines tagged_pair(function template) | |
| Alias-Vorlage für ein getaggtes std::tuple (alias template) | |
Komfortfunktion zum Erstellen eines tagged_tuple(function template) | |
| Tag-Specifier für die Verwendung mit ranges::tagged (class) |