https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91356
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- The ABI dictates the calling conventions and there's certainly nothing that libstdc++ can do about it. In any case, how common is it to have a pointless non-inline baz function which does nothing but forward to another non-inline function? In practice the callers of baz will be able to inline it, removing unnecessary null checks on the moved-from variable, or baz will be able to inline bar, removing the temporary entirely.