https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106013
Bug ID: 106013 Summary: weakly_incrementable cannot apply on common_iterator 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: --- At the moment I don't know why this is recursive, I'll try to reduce it when I have time. So let me assume this is a libstdc++ bug and not a language bug. #include <iterator> struct I { using difference_type = int; int operator*() const; I& operator++(); I operator++(int); }; using CI = std::common_iterator<I, std::unreachable_sentinel_t>; static_assert(std::weakly_incrementable<CI>); https://godbolt.org/z/661djbrPs