https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92894
--- Comment #10 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The releases/gcc-10 branch has been updated by Jonathan Wakely <r...@gcc.gnu.org>: https://gcc.gnu.org/g:6fedf28c7921f125be75a9f688a7b845a1b5663b commit r10-8121-g6fedf28c7921f125be75a9f688a7b845a1b5663b Author: Jonathan Wakely <jwak...@redhat.com> Date: Thu May 7 17:39:56 2020 +0100 libstdc++: Replace deduced return type in ranges::iter_move (PR 92894) The deduced return type causes the instantiation of the function body, which can then require the instantiation of std::projected::operator* which is intentionally not defined. This patch uses a helper trait to define the return type, so that the function body doesn't need to be instantiated. Unlike on the master branch, this backport to gcc-10 does not change the iter_rvalue_reference_t alias template and __indirectly_readable_impl concept to use the new trait. Backport from mainline 2020-05-01 Jonathan Wakely <jwak...@redhat.com> Patrick Palka <ppa...@redhat.com> PR libstdc++/92894 * include/bits/iterator_concepts.h (ranges::__cust_imove::_IMove): Add trait to determine return type and an alias for it. (ranges::__cust_imove::_IMove::operator()): Use __result instead of deduced return type. * testsuite/24_iterators/customization_points/92894.cc: New test. * testsuite/24_iterators/indirect_callable/92894.cc: New test. Co-authored-by: Patrick Palka <ppa...@redhat.com>