std::experimental::ranges:: iterator_category
From cppreference.net
<
cpp
|
experimental
|
ranges
|
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
;
}
|
(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_categoryest identique ou dérive de std::random_access_iterator_tag , fournit un type membretypeégal à ranges::random_access_iterator_tag . -
Sinon, si
T::iterator_categoryest identique ou dérive de std::bidirectional_iterator_tag , fournit un type membretypeégal à ranges::bidirectional_iterator_tag . -
Sinon, si
T::iterator_categoryest identique ou dérive de std::forward_iterator_tag , fournit un type membretypeégal à ranges::forward_iterator_tag . -
Sinon, si
T::iterator_categoryest identique ou dérive de std::input_iterator_tag , fournit un type membretypeégal à ranges::input_iterator_tag . -
Sinon, si
T::iterator_categoryest identique ou dérive de std::output_iterator_tag , il n'y a pas de membretype.
Modèle d'alias d'assistance
|
template
<
class
T
>
using iterator_category_t = typename ranges :: iterator_category < T > :: type ; |
(ranges TS) | |
Exemple
|
Cette section est incomplète
Raison : aucun 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) |