Namensräume
Varianten
Aktionen

std::experimental::ranges:: tagged

Von cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
 
 
Allgemeine Dienstprogramme-Bibliothek
Hilfskomponenten
Funktionsobjekte
Metaprogrammierung und Typ-Traits
Getaggte Paare und Tupel
                          
tagged
Tag-Spezifizierer
                                      
                          
 
std::experimental::ranges::tagged
 
Definiert in Header <experimental/ranges/utility>
template< class Base, TagSpecifier... Tags >

    requires sizeof...(Tags) <= std::tuple_size<Base>::value

struct tagged;
(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) [bearbeiten]
weist ein tagged-Objekt zu
(öffentliche Memberfunktion) [bearbeiten]
tauscht den Inhalt zweier tagged-Objekte
(öffentliche Memberfunktion) [bearbeiten]

[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]

[bearbeiten] Tupel-ähnlicher Zugriff

erhält die Größe eines tagged
(Klassenschablonenspezialisierung) [bearbeiten]
erhält die Typen der Elemente eines tagged
(Klassenschablonenspezialisierung) [bearbeiten]

[bearbeiten] Siehe auch

spezifiziert, dass ein Typ ein Tag-Specifier ist
(concept) [bearbeiten]
Alias-Vorlage für ein getaggtes std::pair
(alias template)[bearbeiten]
Komfortfunktion zum Erstellen eines tagged_pair
(function template) [bearbeiten]
Alias-Vorlage für ein getaggtes std::tuple
(alias template)[bearbeiten]
Komfortfunktion zum Erstellen eines tagged_tuple
(function template) [bearbeiten]
Tag-Specifier für die Verwendung mit ranges::tagged
(class) [bearbeiten]