https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100833
Bug ID: 100833 Summary: ranges::advance should return n when i == bound Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: hewillk at gmail dot com Target Milestone: --- This is specified in [range.iter.op.advance#7]: "Returns: n - M, where M is the difference between the ending and starting positions of i." #include <ranges> constexpr auto diff = [] { auto r = std::views::single(0) | std::views::filter([](int) { return true; }); auto it = r.begin(); return std::ranges::advance(it, 100, r.begin()); }(); static_assert(diff == 100); https://godbolt.org/z/6nh8xMWYd