Говорит ли стандарт С++, что я могу сравнить два итератора 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 operator ==(), которые исключают это использование. (Они проверяют, что каждый итератор "принадлежит" одним и тем же контейнером, и итераторы, построенные по умолчанию, не имеют контейнера.) Это намекает на то, что оно не является законным или, возможно, что они чрезмерно усердны.