std::experimental::ranges:: WeaklyIncrementable
|
Défini dans l'en-tête
<experimental/ranges/iterator>
|
||
|
template
<
class
I
>
concept
bool
WeaklyIncrementable
=
|
(ranges TS) | |
Le concept
WeaklyIncrementable<I>
spécifie les exigences sur un type qui peut être incrémenté (avec les opérateurs de pré-incrémentation et de post-incrémentation). Les opérations d'incrémentation ne doivent pas nécessairement préserver l'égalité, et le type n'a pas besoin d'être
EqualityComparable
.
Soit
i
un objet de type
I
.
i
est dit
incrémentable
s'il se trouve dans le domaine de l'incrémentation préfixe et postfixe.
WeaklyIncrementable<I>
est satisfait seulement si :
- ++ i et i ++ ont le même domaine ;
-
Si
i
est incrémentable, alors :
- ++ i et i ++ font tous deux avancer i vers l'élément suivant ; et
- ++ i fait référence au même objet que i .
Préservation de l'égalité
Une expression est préservatrice d'égalité si elle produit des résultats égaux pour des entrées égales.
- Les entrées d'une expression consistent en ses opérandes.
- Les sorties d'une expression consistent en son résultat et tous les opérandes modifiés par l'expression (le cas échéant).
Toute expression devant préserver l'égalité doit en outre être stable : deux évaluations d'une telle expression avec les mêmes objets d'entrée doivent produire des sorties égales en l'absence de toute modification explicite intervenant entre-temps sur ces objets d'entrée.
Notes
Pour les types
WeaklyIncrementable
,
a
égal à
b
n'implique pas que
++
a
soit égal à
++
b
. Les algorithmes sur de tels types doivent être à passage unique et ne doivent jamais tenter de passer deux fois par la même valeur.