std::experimental::ranges:: iterator_category
From cppreference.net
<
cpp
|
experimental
|
ranges
|
Definiert in Header
<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) | |
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_categorygleich ist oder von std::random_access_iterator_tag abgeleitet ist, wird ein Member-Typtypebereitgestellt, der gleich ranges::random_access_iterator_tag ist. -
Andernfalls, wenn
T::iterator_categorygleich ist oder von std::bidirectional_iterator_tag abgeleitet ist, wird ein Member-Typtypebereitgestellt, der gleich ranges::bidirectional_iterator_tag ist. -
Andernfalls, wenn
T::iterator_categorygleich ist oder von std::forward_iterator_tag abgeleitet ist, wird ein Member-Typtypebereitgestellt, der gleich ranges::forward_iterator_tag ist. -
Andernfalls, wenn
T::iterator_categorygleich ist oder von std::input_iterator_tag abgeleitet ist, wird ein Member-Typtypebereitgestellt, der gleich ranges::input_iterator_tag ist. -
Andernfalls, wenn
T::iterator_categorygleich ist oder von std::output_iterator_tag abgeleitet ist, gibt es kein Membertype.
Helfer-Alias-Template
|
template
<
class
T
>
using iterator_category_t = typename ranges :: iterator_category < T > :: type ; |
(ranges TS) | |
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein 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) |