¿El Estándar C++ dice que debería poder comparar dos iteradores AWL construidos por defecto para la igualdad? ¿Los iteradores construidos por defecto son equivalentes a la igualdad?Comparación de iteradores construidos por defecto con operator ==
quiero lo siguiente, usando std :: lista, por ejemplo:
void foo(const std::list<int>::iterator iter) {
if (iter == std::list<int>::iterator()) {
// Something
}
}
std::list<int>::iterator i;
foo(i);
Lo que quiero aquí es algo así como un valor NULL para iteradores, pero no estoy seguro de si es legal. En la implementación de STL incluida con Visual Studio 2008, incluyen aserciones en el operador std :: list ==() que impiden este uso. (Comprueban que cada iterador es "propiedad" del mismo contenedor y los iteradores construidos por defecto no tienen contenedor). Esto daría a entender que no es legal, o quizás que están siendo demasiado celosos.
'boost :: optional' viene a la mente. –
MSalters