range_adaptor and range_facade respect a request to build a single-pass range, reverse_range_view works with base iterators that return references to internal data