Namespaces
Variants

std:: weakly_incrementable

From cppreference.net
Iterator library
Iterator concepts
weakly_incrementable
(C++20)
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11) (C++14)
(C++14) (C++14)
(C++11) (C++14)
(C++14) (C++14)
(C++17) (C++20)
(C++17)
(C++17)
Definido en el encabezado <iterator>
template < class I >

concepto weakly_incrementable =
std:: movable < I > &&
requiere ( I i ) {
typename std:: iter_difference_t < I > ;
requiere /*is-signed-integer-like*/ < std:: iter_difference_t < I >> ;
{ ++ i } - > std:: same_as < I & > ; // no se requiere que preserve la igualdad
i ++ ; // no se requiere que preserve la igualdad

} ;
(desde C++20)

Para la definición de /*is-signed-integer-like*/ , véase is-integer-like .

Este concepto especifica requisitos sobre tipos que pueden ser incrementados con los operadores de preincremento y postincremento, pero esas operaciones de incremento no son necesariamente equality-preserving , y el tipo en sí no requiere ser std::equality_comparable .

Para tipos std::weakly_incrementable , a == b no implica que ++ a == ++ b . Los algoritmos sobre tipos débilmente incrementables deben ser algoritmos de un solo paso. Estos algoritmos pueden utilizarse con flujos de entrada como fuente de datos mediante std::istream_iterator .

Requisitos semánticos

Para un objeto i de tipo I , I modela std::weakly_incrementable solo si se satisfacen todas las siguientes condiciones:

  • Las expresiones ++ i y i ++ tienen el mismo dominio.
  • Si i es incrementable, entonces tanto ++ i como i ++ incrementan i .
  • Si i es incrementable, entonces std:: addressof ( ++ i ) == std:: addressof ( i ) .

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
P2325R3 C++20 default_initializable era requerido no requerido

Véase también

especifica que la operación de incremento en un tipo weakly_incrementable es que preserva la igualdad y que el tipo es equality_comparable
(concepto)