@Matthieu M .: Не совсем, это от еще не действующего стандарта. А у текущего такого требования нет, также в случае с OP это итераторы с произвольным доступом.

но ли сравнивать итераторы из разных контейнеров?

std::vector<int> foo;
std::vector<int> bar;

Есть ли выражениеfoo.begin() == bar.begin() привести к ложному или неопределенному поведению?

(Я пишу пользовательский итератор и наткнулся на этот вопрос при реализацииoperator==.)

Ответы на вопрос(7)

Ваш ответ на вопрос