Próbuję zrobić coś takiego:
for ( std::list< Cursor::Enum >::reverse_iterator i = m_CursorStack.rbegin(); i != m_CursorStack.rend(); ++i )
{
if ( *i == pCursor )
{
m_CursorStack.erase( i );
break;
}
}
Jednak usuwanie wymaga iteratora, a nie odwrotnego iteratora. czy istnieje sposób przekonwertowania odwrotnego iteratora na zwykły iterator lub inny sposób usunięcia tego elementu z listy?
std::remove?

i != m_CursorStack.rend(). Zamiast tego piszi = m_CursorStack.rbegin(), end = m_CursorStack.rend(); i != end;. Innymi słowy, zainicjuj iterator, który możesz przechowywać w celu powtórzenia porównania - zakładając, że pozycja końcowa nie zmieni się jako efekt uboczny twojego ciała pętli.