Проверьте этот код:
#include "stdafx.h"
#include <list>
int _tmain(int argc, _TCHAR* argv[])
{
std::list<int> mylist;
mylist.push_back(1);
std::list<int>::iterator i = mylist.end();
if( i == mylist.end() )
printf( "end is end\n" );
mylist.clear();
if( i == mylist.end() )
printf( "never get here because Microsoft seems to "
"think the iterator is no longer safe.\n" );
return 0;
}
Теперь, согласно cplusplus.com, это не должно быть проблемой, и в режиме выпуска, я думаю, это нормально и на самом деле не вызывает никаких проблем, но отладка становится невозможной, так как это просто не позволяет мне продолжить. Любые указатели?
.end
тоже недействителен, но в статье написано обратное. Интересно, что ideone.com/Y338N8 выполняет его, как и ожидалось. +1 - person Kiril Kirov   schedule 01.02.2013