https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106798
Bug ID: 106798 Summary: adjacent_view::_Iterator(_Iterator<!_Const>) requires random_access_iterator Product: gcc Version: 13.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: hewillk at gmail dot com Target Milestone: --- ranges#L5216: constexpr _Iterator(_Iterator<!_Const> __i) requires _Const && convertible_to<iterator_t<_Vp>, iterator_t<_Base>> { for (size_t __j = 0; __j < _Nm; ++__j) _M_current[__j] = std::move(__i[__j]); } __i[__j] requires random_access_iterator, which is unnecessary. ranges::move(__i._M_current, _M_current.begin()) should be enough (which requires an extra include header). The testcase would be #include <ranges> int main() { const auto r = std::views::single(0) | std::views::lazy_split(0) | std::views::pairwise; decltype(r.end()) e = auto(r).end(); }