Espacios de nombres
Variantes
Acciones

std::incrementable

De cppreference.com
< cpp‎ | iterator
 
 
Biblioteca de iteradores
Conceptos de iteradores
Primitivas de iteradores
Conceptos de algoritmos y servicios
Conceptos invocables indirectos
Requerimientos comunes de algoritmos
Servicios
Adaptadores de iteradores
Iteradores de flujos
Puntos de personalización de iteradores
Operaciones de iteradores
(C++11)
(C++11)
Acceso a rangos
(C++11)(C++14)
(C++11)(C++14)
(C++17)(C++20)
(C++14)(C++14)
(C++14)(C++14)
(C++17)
(C++17)
 
Definido en el archivo de encabezado <iterator>
template<class I>

    concept incrementable =
        std::regular<I> &&
        std::weakly_incrementable<I> &&
        requires(I i) {
            { i++ } -> std::same_as<I>;

        };
(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) [editar]
(C++20)
Especifica que un tipo es el mismo que otro tipo.
(concepto) [editar]