Referring to the view in iterators is not uncommon - for example http://eel.is/c++draft/ranges#range.istream.iterator
Per [range.range]p5,
iterators produced from a borrowed range type (which utf_view is) are valid independently of
the lifetime of the range object that produced them. Thus, such
iterators cannot query their associated range object (but they
might be able to query the underlying range object if known and if
it is not a borrowed range).
Tom.
For the bidirectional-at-most, there is a blurb http://eel.is/c++draft/ranges#range.iota.iterator-1 - I think Jonathan was wanting to factorise that out somewhere but right now you basically have to copy the blob