cpp/iterator/forward iterator

This concept refines by requiring that  also model  (thereby making it suitable for multi-pass algorithms), and guaranteeing that two iterators to the same range can be compared against each other.

Semantic requirements
models if, and only if  models all the concepts it subsumes, and given objects  and  of type :


 * Comparison between iterators and  has a defined result if
 * and are iterators to the same underlying sequence, or
 * both and  are value-initialized, in which case they compare equal.


 * Pointers and references obtained from a forward iterator into a range remain valid while the range exists.
 * If and  are dereferenceable, they offer the multi-pass guarantee, that is:
 * implies, and
 * is equivalent to.