std::experimental::ranges:: tagged
|
Definido en el encabezado
<experimental/ranges/utility>
|
||
|
template
<
class
Base,
TagSpecifier
...
Tags
>
requires sizeof...
(
Tags
)
<=
std::
tuple_size
<
Base
>
::
value
|
(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) |