https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111535
--- Comment #4 from Eddie Nolan <eddiejnolan at gmail dot com> --- To clarify, I agree that the example in this bug, 111535, is not a proper range adaptor closure object: struct closure : std::ranges::range_adaptor_closure<closure> { int operator()(int); }; This is the example, from bug 116217, that I think is a proper range adaptor closure object, but which is restricted by the wording from using the pipe operator with non-range parameters: struct foo : std::ranges::range_adaptor_closure<foo> { auto operator()(auto const&) const { return std::ranges::empty_view<int>{}; } };