Тип класса или указателя X удовлетворяет требованиям итератора вывода, если X удовлетворяет Iterator требованиям, а выражения в таблице 96 действительны и имеют указанную семантику.
Выражение | Тип возврата | Оперативный | Утверждение / примечание |
семантика | до / после состояния | ||
*r = o | результат не используется |
Remarks: После этой операции r разыменование не требуется. Postconditions: r является увеличиваемым. | |
++r | X& |
&r == &++r. Remarks: После этой операции r разыменование не требуется. Postconditions: r является увеличиваемым. | |
r++ | конвертируемый в const X& |
{ X tmp = r; ++r; return tmp; } |
Remarks: После этой операции r разыменование не требуется. Postconditions: r является увеличиваемым. |
*r++ = o | результат не используется |
Remarks: После этой операции r разыменование не требуется. Postconditions: r является увеличиваемым. |
[ Note: Единственное допустимое использование - operator* находится в левой части оператора присваивания. Assignment through the same value of the iterator happens only once. Алгоритмы на итераторах вывода никогда не должны пытаться дважды пройти через один и тот же итератор. Это должны быть single pass алгоритмы. Равенство и неравенство нельзя определить. Алгоритмы, которые принимают итераторы вывода, могут использоваться с ostreams в качестве места назначения для размещения данных через ostream_iterator класс, а также с итераторами вставки и указателями вставки. ] — end note