C++標準では、デフォルトで構築された2つの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 :: optional'が気になります。 –
MSalters