A path::iterator is a constant iterator satisfying 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.