A 
path::iterator is a constant iterator meeting all the
requirements of a bidirectional iterator (
[bidirectional.iterators])
except that,
for dereferenceable iterators 
a and 
b
of type 
path::iterator
with 
a == b,
there is no requirement that 
*a and 
*b
are bound to the same object
.