std::experimental::ranges:: ForwardIterator
|
Definido en el encabezado
<experimental/ranges/iterator>
|
||
|
template
<
class
I
>
concept
bool
ForwardIterator
=
|
(ranges TS) | |
El concepto
ForwardIterator<I>
refina
InputIterator
añadiendo comparación de igualdad y la garantía de múltiples pasadas.
El dominio de
==
para forward iterators es el de iteradores sobre la misma secuencia subyacente, excepto que los iteradores value-initialized del mismo tipo pueden compararse entre sí y deben compararse como iguales.
Los punteros y referencias obtenidos de un iterador de avance en un rango
[
i
,
s
)
deben permanecer válidos mientras
[
i
,
s
)
continúe denotando un rango.
Sean
a
y
b
dos iteradores dereferenciables de tipo
I
.
ForwardIterator<I>
se satisface solo si:
- a == b implica ++ a == ++ b ; y
-
La expresión
(
[
]
(
X x
)
{
++
x
;
}
(
a
)
,
*
a
)
es equivalente a
*
a
, es decir, incrementar una copia de
ano tiene efecto en el resultado de desreferenciara.
Esto se conoce como la multi-pass guarantee .
Notas
Un iterador de avance no puede ser "de almacenamiento": no puede devolver una referencia a un objeto dentro de sí mismo, porque dichas referencias quedarían invalidadas por la destrucción del iterador de avance.