비교 C++ 표준은 두 개의 기본 생성 STL 반복기를 비교할 수 있다고 말합니까? 기본 생성 iterators는 동등한가?기본 생성 반복자와 연산자 ==
나는 예를 들어 표준 : : 목록을 사용하여, 다음 원하는 : 내가 여기에 원하는 것은
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