std:: weakly_incrementable
| Iterator concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator primitives | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Algorithm concepts and utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Indirect callable concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Common algorithm requirements | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definido en el encabezado
<iterator>
|
||
|
template
<
class
I
>
concepto weakly_incrementable
=
|
(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
|
(C++20)
|
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) |