Sto cercando di fare qualcosa del genere:
for ( std::list< Cursor::Enum >::reverse_iterator i = m_CursorStack.rbegin(); i != m_CursorStack.rend(); ++i )
{
if ( *i == pCursor )
{
m_CursorStack.erase( i );
break;
}
}
Tuttavia, la cancellazione richiede un iteratore e non un iteratore inverso. c'è un modo per convertire un iteratore inverso in un iteratore normale o un altro modo per rimuovere questo elemento dall'elenco?
std::remove?

i != m_CursorStack.rend(). Invece, scrivii = m_CursorStack.rbegin(), end = m_CursorStack.rend(); i != end;. Cioè, inizializza un iteratore che puoi tenere in giro per un confronto ripetuto, supponendo che la posizione finale non cambierà come effetto collaterale del tuo loop.