| X u(a);  |  - | - | после: u - копия a. | 
| u = a | X& | - | после: u - копия a. | 
| a == b | обратимый в bool | - | если a - копия b, тогда a == b возвращает true. == - это отношение эквивалентности в области действия ==. | 
| a!= b | обратимый в bool | !(a == b) | - | 
| *a | обратимый в T | - | до: a - разыменовываемое. если a - копия b, то *a эквивалентно *b. | 
| ++r | X& | - | до: r - разыменовываемое. после: r - разыменовываемое или r - законечное. | 
| void r++ | void | void ++r | - | 
| *r++ | Т | {X tmp = r; ++r; return tmp;} | - | 
ПРИМЕЧАНИЕ. Для итераторов ввода нет никаких требований на тип или значение r++ кроме требования, чтобы *r++ работал соответственным образом. В частности, r == s не подразумевает, что ++r == ++s. (Равенство не гарантирует свойство замены или ссылочной прозрачности.) Что касается ++r, то нет больше никаких требований на значения любых копий r за исключением того, что они могут быть безопасно уничтожены или присвоены. После выполнения ++r не требуется, чтобы были копии (предыдущего) r в области ==. Алгоритмы с итераторами ввода никогда не должны пытаться проходить через тот же самый итератор дважды. Они должны быть 
Итераторы вывода (Output iterators)
Класс или встроенный тип X удовлетворяет требованиям итератора вывода, если справедливы следующие выражения:
Таблица 3. Требования итератора вывода
| выражение | возвращаемый тип | семантика исполнения | утверждение/примечание состояние до/после | 
|---|---|---|---|
| X(a) | - | - | *a = t эквивалентно *X(a) = t. примечание: предполагается деструктор. | 
| X u(a);  |  - | - | - | 
| *a = t | результат не используется | - | - | 
| ++r | X& | 
