On Saturday, 5 January 2013 at 21:23:20 UTC, Sönke Ludwig wrote:
Am 04.01.2013 20:35, schrieb deadalnix:
On Friday, 4 January 2013 at 19:15:03 UTC, Ali Çehreli wrote:
> This may not have a storage :
> foo(funcThatReturnsS());

I don't see that. funcThatReturnsS returns an S, which must have a storage as well.


This is where things are subtle. Depending on the calling convention, the struct may be returned
into a register. In such case it has no storage in memory.


Although, nothing stops the compiler from initializing a struct in a register either. At least when
the constructor can be inlined.

In this case, this is a register promotion that happen as an optimization. This can happen to ANY variable, so I don't see how it is particularly relevant here. The important thing is that the struct HAVE a storage, and may be promoted in register as an optimization.

Reply via email to