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