three little issues

bearophile bearophileHUGS at lycos.com
Sun Feb 6 11:53:48 PST 2011


spir:

> But this does not explain why the compiler refuses:
> 	// 1
> 	auto s = S(data);
> 	return &s;
> and accepts:
> 	// 2
> 	return &(S(data));
> or does it?

Accepting the second is a bug in the escape analysis done by the front-end, I think. 
But see also what Walter has invented here:
http://en.wikipedia.org/wiki/Return_value_optimization


> What are the supposed differences in semantics or behaviour, if any?

Regarding what the compiler actually does, take a look at the produced asm.


> (This is just a synopsis). I need to write it that way, else it's refused.

Don't return pointers to memory present in to-be-deleted stack frames.

Bye,
bearophile


More information about the Digitalmars-d-learn mailing list