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