https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106676
--- Comment #6 from Avi Kivity <avi at scylladb dot com> --- My reproducer: #include <sstream> #include <ranges> #include <concepts> #include <iterator> #include <functional> void f() { auto stream = std::stringstream("aaa bbb"); auto src = std::ranges::subrange(std::istream_iterator<int>(stream), std::istream_iterator<int>()); static_assert(std::ranges::input_range<decltype(src)>); static_assert(std::same_as<typename std::iterator_traits<decltype(src.begin())>::iterator_category, std::input_iterator_tag>); auto plus1 = src | std::views::transform(std::bind_front(std::plus<>(), 1)); static_assert(std::same_as<typename std::iterator_traits<decltype(plus1.begin())>::iterator_category, std::input_iterator_tag>); static_assert(std::ranges::input_range<decltype(plus1)>); } https://godbolt.org/z/3a1WPjzP3