std::incrementable
Definido en el archivo de encabezado <iterator>
|
||
template<class I> concept incrementable = |
(desde C++20) | |
Este concepto especifica los requerimientos en tipos que pueden incrementarse con los operadores de preincremento y posincremento, cuyas operaciones de incremento conservan la igualdad, y el tipo es std::equality_comparable.
A diferencia de std::weakly_incrementable, que solo soporta algoritmos de un solo paso, los algoritmos multipaso unidireccionales pueden usarse con tipos que modelan std::incrementable
.
[editar] Requerimientos semánticos
I
modela std::incrementable
solo si dados dos objetos incrementables a
y b
de tipo I
:
- bool(a == b) implica bool(a++ == b), y
- bool(a == b) implica bool(((void)a++, a) == ++b)
[editar] Conservación de la igualdad
Una expresión es conservadora de igualdad si resulta en 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 es que los hay).
Cada expresión que se requiere sea conservadora de igualdad, se requiere además que sea estable: dos evaluaciones de tal expresión con los mismos objetos de entrada debe tener salidas iguales si no se encuentra alguna modificación interventora de esos objetos de entrada.
A menos que se indique de otra manera, cada expresión utilizada en una expresión-requiere se requiere sea conservadora de igualdad y estable, y la evaluación de la expresión puede solamente modificar sus operandos no constantes. Los operandos que son constantes no deben ser modificados.
[editar] Véase también
Especifica que un tipo [[cpp/concepto no reconocido/Semiregular|Semiregular ]] puede incrementarse con operadores de preincremento y posincremento. (concepto) | |
(C++20) |
Especifica que un tipo es el mismo que otro tipo. (concepto) |