https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111550
Bug ID: 111550 Summary: The range adaptor closure object generated by adaptor(args...) is not a perfect forwarding call wrapper Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: hewillk at gmail dot com Target Milestone: --- The call operator of _Partial only handles the const& and && qualifiers, which is missing the & and const&& and causes the following code to be rejected. #include <ranges> struct Five { operator int() &; operator int() && = delete; }; int main() { auto take_five = std::views::take(Five{}); auto r = take_five(std::views::iota(0)); } https://godbolt.org/z/b19fsGceG