Namespaces
Variants

std::experimental::ranges:: iterator_category

From cppreference.net
Défini dans l'en-tête <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)

Calcule la catégorie d'itérateur de la classe I , si elle existe. Les utilisateurs peuvent spécialiser iterator_category pour un type défini par le programme.

1) Le gabarit primaire est une structure vide.
2) Spécialisation pour les pointeurs. Si T est un type d'objet, fournit un type membre type égal à ranges::random_access_iterator_tag . Sinon, il n'y a pas de membre type .
3) Spécialisation pour les types qualifiés const.
4) Spécialisation pour les types qui définissent un type membre public et accessible iterator_category . Si T::iterator_category est identique ou dérivé d'une des balises de catégorie d'itérateur dans l'espace de noms std , il est mappé vers la balise correspondante dans l'espace de noms ranges comme décrit ci-dessous. Sinon, fournit un type membre type égal à T::iterator_category .
  • Si T::iterator_category est identique ou dérive de std::random_access_iterator_tag , fournit un type membre type égal à ranges::random_access_iterator_tag .
  • Sinon, si T::iterator_category est identique ou dérive de std::bidirectional_iterator_tag , fournit un type membre type égal à ranges::bidirectional_iterator_tag .
  • Sinon, si T::iterator_category est identique ou dérive de std::forward_iterator_tag , fournit un type membre type égal à ranges::forward_iterator_tag .
  • Sinon, si T::iterator_category est identique ou dérive de std::input_iterator_tag , fournit un type membre type égal à ranges::input_iterator_tag .
  • Sinon, si T::iterator_category est identique ou dérive de std::output_iterator_tag , il n'y a pas de membre type .

Modèle d'alias d'assistance

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

Exemple

Voir aussi

types de classes vides utilisés pour indiquer les catégories d'itérateurs
(classe)
types de classes vides utilisés pour indiquer les catégories d'itérateurs
(classe)
classe de traits de compatibilité qui collecte les types associés d'un itérateur
(modèle d'alias)