https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106676
--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Avi Kivity from comment #5) > I believe this is causing application of std::views::transform() not to > model the underlying view's category, since its iterators can't return an > lvalue. No, your code just has a bug, see https://eel.is/c++draft/range.transform.iterator#2.sentence-1 "The member typedef-name iterator_category is defined if and only if Base models forward_range." So transform_view's iterator has no iterator_category for an input range.