On Saturday, 19 May 2018 at 17:33:08 UTC, Robert M. Münch wrote:
On 2018-05-18 14:42:17 +0000, Adam D. Ruppe said:
A value struct return is actually done via a hidden pointer parameter (so the function can construct it in-place for the caller, a standard optimization), so it just shifted all the other arguments to the side, causing one of those 0's to be interpreted as the string.

[...]

Is this somehwere documented?

https://docs.microsoft.com/en-us/cpp/build/return-values-cpp:

Otherwise, the caller assumes the responsibility of allocating
memory and passing a pointer for the return value as the first
argument. Subsequent arguments are then shifted one argument
to the right.

Reply via email to