J'ai parcouru stackoverflow de long en large et même le très, très gentil article du Dr. Dobbs mais je ne trouve pas de réponse définitive à la question.
Une partie de la réponse à la question Quels sont les défauts de std::reverse_iterator ? dit que cela pourrait ne pas être possible du tout.
std::list::reverse_iterator it = list.rbegin();
while( it != list.rend() )
{
int value=*it;
if( some_cond_met_on(value) )
{
++it;
list.erase( it.base() );
}
else
{
++it;
}
}
PS : Je sais qu'il existe d'autres alternatives, comme erase_if(), mais je recherche une réponse à cette question spécifique.