A 
path::iterator is a constant iterator meeting all the
requirements of a 
bidirectional iterator
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
.