Namespaces
Variants

std::experimental::ranges:: iterator_category

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

Berechnet die Iteratorkategorie der Klasse I , falls vorhanden. Benutzer können iterator_category für einen benutzerdefinierten Typ spezialisieren.

1) Das Primär-Template ist eine leere Struktur.
2) Spezialisierung für Zeiger. Wenn T ein Objekttyp ist, stellt es einen Member-Typ type bereit, der gleich ranges::random_access_iterator_tag ist. Andernfalls gibt es kein Member type .
3) Spezialisierung für const-qualifizierte Typen.
4) Spezialisierung für Typen, die einen öffentlichen und zugänglichen Member-Typ iterator_category definieren. Wenn T::iterator_category gleich ist oder von einem der Iterator-Kategorie-Tags im Namensraum std abgeleitet ist, wird es dem entsprechenden Tag im Namensraum ranges zugeordnet, wie unten beschrieben. Andernfalls wird ein Member-Typ type bereitgestellt, der gleich T::iterator_category ist.
  • Wenn T::iterator_category gleich ist oder von std::random_access_iterator_tag abgeleitet ist, wird ein Member-Typ type bereitgestellt, der gleich ranges::random_access_iterator_tag ist.
  • Andernfalls, wenn T::iterator_category gleich ist oder von std::bidirectional_iterator_tag abgeleitet ist, wird ein Member-Typ type bereitgestellt, der gleich ranges::bidirectional_iterator_tag ist.
  • Andernfalls, wenn T::iterator_category gleich ist oder von std::forward_iterator_tag abgeleitet ist, wird ein Member-Typ type bereitgestellt, der gleich ranges::forward_iterator_tag ist.
  • Andernfalls, wenn T::iterator_category gleich ist oder von std::input_iterator_tag abgeleitet ist, wird ein Member-Typ type bereitgestellt, der gleich ranges::input_iterator_tag ist.
  • Andernfalls, wenn T::iterator_category gleich ist oder von std::output_iterator_tag abgeleitet ist, gibt es kein Member type .

Helfer-Alias-Template

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

Beispiel

Siehe auch

Leere Klassentypen, die zur Kennzeichnung von Iterator-Kategorien verwendet werden
(Klasse)
Leere Klassentypen, die zur Kennzeichnung von Iterator-Kategorien verwendet werden
(Klasse)
Kompatibilitäts-Merkmalsklasse, die die assoziierten Typen eines Iterators sammelt
(Alias-Template)