std::experimental::ranges:: iterator_category
From cppreference.net
<
cpp
|
experimental
|
ranges
|
Definido en el encabezado
<experimental/ranges/iterator>
|
||
|
template
<
class
I
>
struct iterator_category { } ; |
(1) | |
|
template
<
class
T
>
struct iterator_category < T * > ; |
(2) | |
|
template
<
class
T
>
struct iterator_category < const T > : iterator_category < T > { } ; |
(3) | |
|
template
<
class
T
>
requires requires
{
typename
T
::
iterator_category
;
}
|
(4) | |
Calcula la categoría del iterador de la clase
I
, si existe. Los usuarios pueden especializar
iterator_category
para un tipo definido por el programa.
1)
La plantilla principal es una estructura vacía.
2)
Especialización para punteros. Si
T
es un tipo objeto, proporciona un tipo miembro
type
igual a
ranges::random_access_iterator_tag
. De lo contrario, no existe el miembro
type
.
3)
Especialización para tipos calificados con const.
4)
Especialización para tipos que definen un tipo miembro público y accesible
iterator_category
. Si
T::iterator_category
es igual o deriva de una de las etiquetas de categoría de iterador en el espacio de nombres
std
, se mapea a la etiqueta correspondiente en el espacio de nombres
ranges
como se describe a continuación. De lo contrario, proporciona un tipo miembro
type
igual a
T::iterator_category
.
-
Si
T::iterator_categoryes igual o deriva de std::random_access_iterator_tag , proporciona un tipo miembrotypeigual a ranges::random_access_iterator_tag . -
De lo contrario, si
T::iterator_categoryes igual o deriva de std::bidirectional_iterator_tag , proporciona un tipo miembrotypeigual a ranges::bidirectional_iterator_tag . -
De lo contrario, si
T::iterator_categoryes igual o deriva de std::forward_iterator_tag , proporciona un tipo miembrotypeigual a ranges::forward_iterator_tag . -
De lo contrario, si
T::iterator_categoryes igual o deriva de std::input_iterator_tag , proporciona un tipo miembrotypeigual a ranges::input_iterator_tag . -
De lo contrario, si
T::iterator_categoryes igual o deriva de std::output_iterator_tag , no existe el miembrotype.
Plantilla de alias auxiliar
|
template
<
class
T
>
using iterator_category_t = typename ranges :: iterator_category < T > :: type ; |
(ranges TS) | |
Ejemplo
|
Esta sección está incompleta
Motivo: sin ejemplo |
Véase también
|
tipos de clases vacías utilizados para indicar categorías de iteradores
(clase) |
|
|
tipos de clases vacías utilizados para indicar categorías de iteradores
(clase) |
|
|
clase de rasgos de compatibilidad que recopila los tipos asociados de un iterador
(plantilla de alias) |