Наблюдение 1: выходной итератор C++ требует этого &r == &++r
, в то время как входной итератор не упоминает это требование. См. [C++11: 24.2.{3,4}].
Наблюдение 2. Прямые, двунаправленные итераторы произвольного доступа удовлетворяют требованиям входных итераторов [24.2.{5,6,7}:1], но не обязательно требованиям выходных итераторов, если только они не являются изменяемыми [ 24.2.1:4].
Наблюдение 3. Двунаправленные итераторы добавляют операцию уменьшения префикса с требованием &r == &--r
[24.2.6].
Итак, правда ли, что постоянный двунаправленный итератор должен удовлетворять &r == &--r
, но не обязательно &r == &++r
, а изменяемый двунаправленный итератор должен удовлетворять обоим?
Можете ли вы указать, как это требование может повлиять на реализацию?
MvG ниже задает вопрос, который я действительно имел в виду:
- Когда постоянный итератор Forward имеет смысл не удовлетворять
&r == &++r
?