Controllare questo codice:std :: list :: clear invalidate std :: list :: end iterator?
#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;
}
Ora, secondo cplusplus.com questo non dovrebbe essere un problema, e in modalità di rilascio, penso che questo va bene e non causa problemi in realtà, ma il debugging diventa impossibile come questo balbetta senza lasciarmi continuare. Qualche indicazione?
Interessante. Ho pensato che anche '.end' sia stato invalidato, ma l'articolo dice il contrario. È interessante, che http://ideone.com/Y338N8 lo esegue come previsto. +1 –
Questo ha perfettamente senso poiché il codice che sto provando a portare su Windows è stato scritto per MacOS e Linux. Entrambi gestiscono GCC, come fa l'ideone. Immagino che questo sia un bug della biblioteca. –