cycle_view currently requires bidirectional ranges to be common because it assigns std::ranges::end(base_) to current_ when it cycles from begin to end. Non-common, sized, bidirectional ranges should be supported.
Range-v3 supports non-common, non-sized bidirectional ranges by --begin(my_cycle_view) being O(n) unless end has been cached. I don't think we should do that.
cycle_view
currently requires bidirectional ranges to be common because it assignsstd::ranges::end(base_)
tocurrent_
when it cycles from begin to end. Non-common, sized, bidirectional ranges should be supported.Range-v3 supports non-common, non-sized bidirectional ranges by
--begin(my_cycle_view)
being O(n) unlessend
has been cached. I don't think we should do that.