Posso convertire un iteratore inverso in un iteratore in avanti?

Ho una class chiamata Action , che è essenzialmente un wrapper attorno a una deque di oggetti Move .

Perché ho bisogno di attraversare il deque di Moves sia in avanti che all’indietro, ho un iteratore in avanti e un reverse_iterator come variabili membro della class. La ragione di questo è perché ho bisogno di sapere quando sono passato un “fine” del deque, sia quando vado avanti o indietro.

La class si presenta così:

 class Action { public: SetMoves(std::deque & dmoves) { _moves = dmoves; } void Advance(); bool Finished() { if( bForward ) return (currentfwd==_moves.end()); else return (currentbck==_moves.rend()); } private: std::deque _moves; std::deque::const_iterator currentfwd; std::deque::const_reverse_iterator currentbck; bool bForward; }; 

La funzione Advance è la seguente:

 void Action::Advance { if( bForward) currentfwd++; else currentbck++; } 

Il mio problema è che voglio essere in grado di recuperare un iteratore sull’object Move corrente, senza dover interrogare se sto andando avanti o indietro. Ciò significa che una funzione restituisce un tipo di iteratore, ma ne ho due tipi.

Devo dimenticare di restituire un iteratore e restituire invece un riferimento const a un object Move ?

Auguri,

BeeBand