https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119820
--- Comment #1 from 康桓瑋 <hewillk at gmail dot com> --- An example I can think of could be: struct I { using difference_type = int; using value_type = char; value_type operator*() const; I& operator++(); I operator++(int); I& operator--(); I operator--(int); I& operator+=(std::signed_integral auto); I& operator-=(std::signed_integral auto); value_type operator[](std::signed_integral auto) const; friend I operator+(I, std::signed_integral auto); friend I operator+(std::signed_integral auto, I); friend I operator-(I, std::signed_integral auto); friend difference_type operator-(I, I); auto operator<=>(const I&) const = default; }; int main() { std::ranges::subrange r{I{}, std::unreachable_sentinel}; [[maybe_unused]] std::format("{:s}", r); } Although this does seem a bit nitpicking, sorry.