Namespaces
Variants

std::experimental::ranges:: OutputIterator

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

concept bool OutputIterator =
Iterator < I > && Writable < I, T > &&
requires ( I i, T && t ) {
* i ++ = std:: forward < T > ( t ) ; // no se requiere que preserve la igualdad

} ;
(ranges TS)

El concepto OutputIterator es un refinamiento de Iterator , añadiendo el requisito de que puede utilizarse para escribir valores de tipo y categoría de valor codificados por T (a través de Writable ). EqualityComparable no es requerido.

Sea E una expresión tal que decltype ( ( E ) ) es T , y i un objeto desreferenciable de tipo I . OutputIterator<I, T> se satisface solo si * i ++ = E ; tiene efectos equivalentes a * i = E ; ++ i ; .

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, a menos que exista una modificación explícita e intermedia de esos objetos de entrada.

Notas

A diferencia de los requisitos del iterador de salida en el estándar de C++, OutputIterator en el Ranges TS no requiere que la etiqueta de categoría del iterador esté definida.

Los algoritmos en iteradores de salida deben ser de una sola pasada.