Saya mencoba melakukan sesuatu seperti ini:
for ( std::list< Cursor::Enum >::reverse_iterator i = m_CursorStack.rbegin(); i != m_CursorStack.rend(); ++i )
{
if ( *i == pCursor )
{
m_CursorStack.erase( i );
break;
}
}
Namun menghapus membutuhkan iterator dan bukan iterator terbalik. apakah ada cara untuk mengubah iterator terbalik menjadi iterator biasa atau cara lain untuk menghapus elemen ini dari daftar?
std::remove?

i != m_CursorStack.rend(). Sebaliknya, tulislahi = m_CursorStack.rbegin(), end = m_CursorStack.rend(); i != end;. Yaitu, inisialisasi iterator yang dapat Anda pertahankan untuk perbandingan berulang - dengan asumsi bahwa posisi akhir tidak akan berubah sebagai efek samping dari tubuh loop Anda.