std::experimental::ranges:: WeaklyIncrementable
|
Definido en el encabezado
<experimental/ranges/iterator>
|
||
|
template
<
class
I
>
concept
bool
WeaklyIncrementable
=
|
(ranges TS) | |
El concepto
WeaklyIncrementable<I>
especifica los requisitos para un tipo que puede ser incrementado (con los operadores de pre-incremento y post-incremento). Las operaciones de incremento no necesitan preservar la igualdad, y el tipo no necesita ser
EqualityComparable
.
Sea
i
un objeto de tipo
I
.
i
se dice que es
incrementable
si está en el dominio tanto del pre-incremento como del post-incremento.
WeaklyIncrementable<I>
se satisface solamente si:
- ++ i y i ++ tienen el mismo dominio;
-
Si
i
es incrementable, entonces:
- ++ i y i ++ ambos avanzan i al siguiente elemento; y
- ++ i se refiere al mismo objeto que i .
Preservación de la igualdad
Una expresión es equality preserving si produce salidas iguales dadas entradas iguales.
- Las entradas de una expresión consisten en sus operandos.
- Las salidas de una expresión consisten en su resultado y todos los operandos modificados por la expresión (si los hay).
Toda expresión que deba preservar la igualdad debe además ser estable : dos evaluaciones de dicha expresión con los mismos objetos de entrada deben producir salidas iguales, a menos que exista una modificación explícita e intermedia de esos objetos de entrada.
Notas
Para tipos
WeaklyIncrementable
,
a
igual a
b
no implica que
++
a
sea igual a
++
b
. Los algoritmos en tales tipos deben ser de una sola pasada y nunca intentar pasar por el mismo valor dos veces.