Namespaces
Variants

std::experimental::ranges:: iterator_category

From cppreference.net
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 ; }

struct iterator_category < T > ;
(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_category es igual o deriva de std::random_access_iterator_tag , proporciona un tipo miembro type igual a ranges::random_access_iterator_tag .
  • De lo contrario, si T::iterator_category es igual o deriva de std::bidirectional_iterator_tag , proporciona un tipo miembro type igual a ranges::bidirectional_iterator_tag .
  • De lo contrario, si T::iterator_category es igual o deriva de std::forward_iterator_tag , proporciona un tipo miembro type igual a ranges::forward_iterator_tag .
  • De lo contrario, si T::iterator_category es igual o deriva de std::input_iterator_tag , proporciona un tipo miembro type igual a ranges::input_iterator_tag .
  • De lo contrario, si T::iterator_category es igual o deriva de std::output_iterator_tag , no existe el miembro type .

Plantilla de alias auxiliar

template < class T >
using iterator_category_t = typename ranges :: iterator_category < T > :: type ;
(ranges TS)

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)