Namespaces
Variants

std::experimental::ranges:: OutputIterator

From cppreference.net
template < class I, class T >

concept bool OutputIterator =
Iterator < I > && Writable < I, T > &&
requires ( I i, T && t ) {
* i ++ = std:: forward < T > ( t ) ; // nicht erforderlich equality preserving zu sein

} ;
(ranges TS)

Das OutputIterator -Konzept ist eine Verfeinerung von Iterator , die die Anforderung hinzufügt, dass es zum Schreiben von Werten des Typs und der Wertkategorie verwendet werden kann, die durch T kodiert sind (über Writable ). EqualityComparable ist nicht erforderlich.

Sei E ein Ausdruck, sodass decltype ( ( E ) ) gleich T ist, und i sei ein dereferenzierbares Objekt vom Typ I . OutputIterator<I, T> ist nur dann erfüllt, wenn * i ++ = E ; äquivalente Effekte zu * i = E ; ++ i ; hat.

Gleichheitserhaltung

Ein Ausdruck ist gleichheitserhaltend , wenn er bei gleichen Eingaben gleiche Ausgaben liefert.

  • Die Eingaben eines Ausdrucks bestehen aus seinen Operanden.
  • Die Ausgaben eines Ausdrucks bestehen aus seinem Ergebnis und allen durch den Ausdruck modifizierten Operanden (falls vorhanden).

Jeder Ausdruck, der gleichungserhaltend sein muss, muss darüber hinaus stabil sein: Zwei Auswertungen eines solchen Ausdrucks mit denselben Eingabeobjekten müssen gleiche Ausgaben liefern, sofern keine explizite Änderung dieser Eingabeobjekte zwischen den Auswertungen erfolgt.

Hinweise

Im Gegensatz zu den Anforderungen an Ausgabeiteratoren im C++-Standard, OutputIterator im Ranges TS erfordert nicht, dass der Iteratorkategorie-Tag definiert wird.

Algorithmen auf Ausgabeiteratoren sollten einzelndurchlaufend sein.