jeudi 30 avril 2015

Implicit conversion differene between std::iterator and std::reverse_iterator

So, I just noticed that, for some reason, std::const_reverse_iterator is implicitly converted to std::reverse_iterator but std::const_iterator is not implicitly converted to std::iterator in my example. I am using cbegin and crbegin to retrieve const iterators from my vector:

#include <vector>
int main()
{
    typedef std::vector< int > Vector_t;
    Vector_t Vector;

    Vector_t::iterator          Iterator1  = Vector.cbegin();   // error
    Vector_t::reverse_iterator  Iterator2  = Vector.crbegin();  // ok
}

Why is this? Shouldn't the rules be the same for forward- and reverse iterators?

Aucun commentaire:

Enregistrer un commentaire