https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100249
--- Comment #4 from Patrick Palka <ppalka at gcc dot gnu.org> --- (In reply to 康桓瑋 from comment #0) > when the type of __proj_val is an rvalue reference, we need to convert it to > rvalue for the next std::__invoke call: https://godbolt.org/z/1G7aqxs3c. So it seems the projection application limit of 3 makes it impossible for ranges::clamp to perfectly support the case where the projection returns an rvalue reference.