std::experimental::ranges:: Incrementable
|
Défini dans l'en-tête
<experimental/ranges/iterator>
|
||
|
template
<
class
I
>
concept
bool
Incrementable
=
|
(ranges TS) | |
Le concept
Incrementable<I>
spécifie les exigences pour un type qui peut être incrémenté (avec les opérateurs de pré-incrémentation et post-incrémentation). Les opérations d'incrémentation (y compris celles requises par
WeaklyIncrementable
) doivent préserver l'égalité, et le type doit être
EqualityComparable
.
Soient
a
et
b
des objets incrémentables de type
I
.
Incrementable<I>
est satisfait seulement si :
- Si bool ( a == b ) alors bool ( a ++ == b ) .
- Si bool ( a == b ) alors bool ( void ( a ++ ) , a ) == ++ b ) .
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 de ces objets d'entrée.
Sauf indication contraire, toute expression utilisée dans une requires-expression doit être égalité-préservante et stable, et l'évaluation de l'expression ne peut modifier que ses opérandes non constants. Les opérandes constants ne doivent pas être modifiés.
Notes
L'exigence que
a
soit égal à
b
implique que
++a
soit égal à
++b
permet l'utilisation d'algorithmes multi-passes avec les types
Incrementable
.