https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106676
--- Comment #14 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Jonathan Wakely <r...@gcc.gnu.org>: https://gcc.gnu.org/g:7f65f94917866c6b18d9698eec6451c1bf21e0f9 commit r15-4356-g7f65f94917866c6b18d9698eec6451c1bf21e0f9 Author: Jonathan Wakely <jwak...@redhat.com> Date: Sun Oct 13 22:28:16 2024 +0100 libstdc++: Implement LWG 3798 for range adaptors [PR106676] LWG 3798 modified the iterator_category of the iterator types for transform_view, join_with_view, zip_transform_view and adjacent_transform_view, to allow the iterator's reference type to be an rvalue reference. libstdc++-v3/ChangeLog: PR libstdc++/106676 * include/bits/iterator_concepts.h (__cpp17_fwd_iterator): Use is_reference instead of is_value_reference. rvalue references. * include/std/ranges (transform_view:__iter_cat::_S_iter_cat): Likewise. (zip_transform_view::__iter_cat::_S_iter_cat): Likewise. (adjacent_transform_view::__iter_cat::_S_iter_cat): Likewise. (join_with_view::__iter_cat::_S_iter_cat): Likewise. * testsuite/std/ranges/adaptors/transform.cc: Check iterator_category when the transformation function returns an rvalue reference type. Reviewed-by: Patrick Palka <ppa...@redhat.com>