C++标准是否说我应该能够比较两个默认构造的STL迭代器的相等性?默认构造的迭代器是否相等?比较默认构造的迭代器和运算符==
我想下面,使用std ::列表例如:
void foo(const std::list<int>::iterator iter) {
if (iter == std::list<int>::iterator()) {
// Something
}
}
std::list<int>::iterator i;
foo(i);
我想在这里是什么东西像迭代器NULL值,但我不知道这是否是合法的。在Visual Studio 2008中包含的STL实现中,它们在std :: list的运算符==()中包含断言,排除了这种用法。 (他们检查每个迭代器是否由同一个容器“拥有”,并且默认构造的迭代器没有容器。)这会暗示它不合法,或者它们可能是过度热心的。
`的boost ::可选的<性病::目录::迭代器>`浮现在脑海。 – MSalters 2009-07-28 07:48:17