Сравнение построенных по умолчанию итераторов с оператором ==
Стандарт C ++ говорит, что я должен быть в состоянии сравнить два построенных по умолчанию итератора STL на равенство? Итераторы, построенные по умолчанию, сравнимы по равенству?
Я хочу следующее, используя std :: list например:
void foo(const std::list<int>::iterator iter) {
if (iter == std::list<int>::iterator()) {
// Something
}
}
std::list<int>::iterator i;
foo(i);
Здесь мне нужно что-то вроде значения NULL для итераторов, но я не уверен, допустимо ли оно. В реализацию STL, включенную в Visual Studio 2008, они включают утверждения в операторе std :: list & reg; == (), которые исключают это использование. (Они проверяют, что каждый итератор "принадлежит" одному и тому же контейнеру, а построенные по умолчанию итераторы не имеют контейнера.) Это намекает на то, что это не законно или, возможно, они чрезмерно усердны.