Namespaces
Variants

std::experimental::ranges:: Iterator

From cppreference.net
Definido en el encabezado <experimental/ranges/iterator>
template < class I >

concept bool Iterator =
requires ( I i ) {
{ * i } - > auto && ; // Requiere: i es dereferenciable
} &&

WeaklyIncrementable < I > ;
(ranges TS)

El concepto Iterator forma la base de la taxonomía de conceptos de iteradores; cada iterador satisface los Iterator requisitos.

Preservación de la igualdad

Una expresión es equality preserving si produce 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 los hay).

Toda expresión que deba preservar la igualdad debe además ser estable : dos evaluaciones de dicha expresión con los mismos objetos de entrada deben producir salidas iguales, en ausencia de cualquier modificación explícita intermedia de esos objetos de entrada.

A menos que se indique lo contrario, toda expresión utilizada en una requires-expression debe ser de preservación de igualdad y estable, y la evaluación de la expresión solo puede modificar sus operandos no constantes. Los operandos que son constantes no deben modificarse.

Notas

Iterator en sí mismo solo especifica operaciones para desreferenciar e incrementar un iterador. La mayoría de los algoritmos requerirán operaciones adicionales, por ejemplo:

La restricción - > auto && implica que el tipo de resultado de la desreferencia no puede ser void .