On Tuesday, 9 June 2015 at 15:08:07 UTC, Steven Schveighoffer
wrote:
Because it's not moved. It's written in the stack where it will
be passed to the next function.
Hmm, you mean the callee's function parameters stack? That's not
always going to work, e.g., on Win64 the first 4 args are passed
in registers, always. And, as I said, that ABI doesn't support
byval passing of types > 64 bits (let's exclude vector types
here), so rvalues > 64 bits can sadly not be constructed in-place
without violating the Win64 ABI - they'll have to be passed byref.