https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83032
--- Comment #1 from Marc Glisse <glisse at gcc dot gnu.org> --- I don't think that's one of the cases where the C++ standard allows elision, and I am not sure how that would work in practice. The idea for the return slot optimization is that the caller reserves enough memory for the result, and passes a pointer to that region to the callee. Here, you'd want the callee to forward that pointer to a nested call, which actually requires a larger region (for a pair). So it could only work if the region was at the extremity of the stack and the stack grows in the right direction?