Yes, this is fine. This is how VC10's implementation of the iterators for vector are structured, for example. See _Vector_iterator and _Vector_const_iterator in .
By the way, writing iterators is hard. It's worth your time to learn and use the boost::iterator library.