std::experimental::ranges::OutputIterator
| Definiert in Header <experimental/ranges/iterator> |
||
| template< class I, class T > concept bool OutputIterator = |
(Ranges TS) | |
Das Konzept OutputIterator ist eine Verfeinerung von Iterator und fügt die Anforderung hinzu, dass es zum Schreiben von Werten vom Typ und der Wertkategorie, die von T kodiert werden (über Writable), verwendet werden kann. EqualityComparable ist nicht erforderlich.
Sei E ein Ausdruck, so dass decltype((E)) T ist, und sei i ein dereferenzierbares Objekt vom Typ I. OutputIterator<I, T> ist nur dann erfüllt, wenn *i++ = E; Effekte hat, die äquivalent zu *i = E; ++i; sind.
[bearbeiten] Gleichheitserhaltung
Ein Ausdruck ist gleichheitserhaltend, wenn er bei gleichen Eingaben gleiche Ausgaben liefert.
- Die Eingaben für einen Ausdruck bestehen aus seinen Operanden.
- Die Ausgaben eines Ausdrucks bestehen aus seinem Ergebnis und allen von dem Ausdruck modifizierten Operanden (falls vorhanden).
Jeder Ausdruck, der gleichheitserhaltend sein muss, muss außerdem stabil sein: Zwei Auswertungen eines solchen Ausdrucks mit denselben Eingabeobjekten müssen gleiche Ausgaben liefern, solange keine explizite zwischenzeitliche Modifikation dieser Eingabeobjekte erfolgt.
[bearbeiten] Anmerkungen
Im Gegensatz zu den Anforderungen an Output-Iteratoren im C++-Standard erfordert OutputIterator in der Ranges TS nicht, dass der Iterator-Kategorie-Tag definiert ist.
Algorithmen auf Output-Iteratoren sollten Single-Pass sein.