Namespaces
Variants

std::experimental::ranges:: tagged

From cppreference.net
Definido en el encabezado <experimental/ranges/utility>
template < class Base, TagSpecifier ... Tags >

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

struct tagged ;
(ranges TS)

La plantilla de clase tagged aumenta un tipo de clase similar a una tupla Base , del cual deriva públicamente, con un conjunto de accesores nombrados especificados por los especificadores de etiqueta Tags... . Las etiquetas se aplican en orden: el i-ésimo especificador de etiqueta en Tags... corresponde al i-ésimo elemento de la tupla.

Los especificadores de etiqueta en Tags... deben ser únicos. De lo contrario, el comportamiento es indefinido.

No es posible eliminar una instancia de tagged a través de un puntero a cualquier base que no sea Base .

Contenidos

Funciones miembro

construye un objeto tagged
(función miembro pública)
asigna un objeto tagged
(función miembro pública)
intercambia el contenido de dos objetos tagged
(función miembro pública)

Accesores de elementos con nombre

Para el N -ésimo especificador de etiqueta en Tags... cuyo nombre de elemento correspondiente es name , tagged proporciona accesores denominados name de la siguiente manera:

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)); }

Funciones no miembro

especializa swap para objetos tagged
(función)

Acceso tipo tupla

obtiene el tamaño de un tagged
(especialización de plantilla de clase)
obtiene los tipos de los elementos de un tagged
(especialización de plantilla de clase)

Véase también

especifica que un tipo es un especificador de etiqueta
(concepto)
plantilla de alias para un std::pair etiquetado
(plantilla de alias)
función de conveniencia para crear un tagged_pair
(plantilla de función)
plantilla de alias para un std::tuple etiquetado
(plantilla de alias)
función de conveniencia para crear un tagged_tuple
(plantilla de función)
especificadores de etiqueta para usar con ranges::tagged
(clase)