Bueno, sé por qué, es porque no hay una conversión, pero ¿por qué no hay una conversión? ¿Por qué los iteradores de reenvío pueden pasar a iteradores inversos, pero no al revés? Y más importante aún, ¿qué puedo hacer si quiero hacer esto? ¿Hay algún adaptador que te permita iterar hacia atrás usando un iterador directo?¿Por qué no puedo convertir un iterador inverso en un iterador directo?
std::vector<int> buffer(10);
std::vector<int>::iterator forward = buffer.begin();
std::vector<int>::reverse_iterator backward = buffer.rbegin();
++forward;
++backward;
std::vector<int>::iterator forwardFromBackward = std::vector<int>::iterator(backward); // error! Can't convert from reverse_iterator to iterator!
std::vector<int>::reverse_iterator backwardFromForward = std::vector<int>::reverse_iterator(forward); // this is fine
Hay una conversión: 'backward.base();' – ybungalobill
Estoy bastante seguro de que puedes usar 'reverse_iterator 'donde sea necesario pasando el tipo de iterador como argumento de plantilla donde quiera que use' iterator'. ¿No soluciona tu problema? – Grozz
Tienes toda la razón ybungalobill; mi código real es un poco más complejo que este y probé la base(), pero me dio errores, así que me rendí y mi cerebro borró mi conocimiento de ello. ¡Gracias! Si agrega ese texto exacto como respuesta, lo aceptaré, ya que realmente * es * una respuesta. –