Об этом сообщалось о дефекте ( дефект LWG 446 ). В отчете о дефектах спрашивается, допустимо ли сравнивать итераторы, которые ссылаются на элементы разных контейнеров.
Примечания в отчете о дефектах объясняют, что это определенно предполагалось, что это не определено, но прямо не указано, что оно не определено.
Предложенное решение состояло в том, чтобы добавить в стандарт следующее, явно указав, что он не определен:
Результат прямой или косвенной оценки любой функции сравнения или бинарного оператора с двумя значениями итератора в качестве аргументов, которые были получены из двух различных диапазонов r1 и r2 (включая их последние значения), которые не являются поддиапазонами одного общий диапазон не определен, если явно не указано иное.
Редактировать: Этот язык не включен в C ++ 0x FCD. Эта проблема была фактически решена путем изменений в N3066 ; в частности, следующее дополнение (§24.2.5 / 2):
Область ==
для прямых итераторов - это область итераторов в одной и той же базовой последовательности.