On Wednesday, 10 April 2013 at 13:51:59 UTC, deadalnix wrote:
It is certainly more complex on the compiler implementation side. But the ends result can be much better, and any program would benefit from it.

Plus, do you know that depending on the ABI, some pass by value are already transformed as pass by ref ? This is already in place in some cases, and have been proven to work well.

Back to the DIP, it fail to define how and where lvalue are implicitely created, what are their lifetime, etc . . .

Finally, ref and scope would benefit much more from the introduction of lifetime into D than hacking around.

DIP36 was intentionally tweaked in such way so that compiler is free to do any implementation and swap pass by values with pass by ref if needed - until it preserves the semantics guarantees.

Introduction of lifetime is very beneficial but not really relevant to _this_ DIP. If lifetime is well defined, idea of making struct literal lvalues may be discussed, but that is a different story.

I don't care about how complex compiler implementation is but behavior needs to be predictable by programmer, no observable magic. Scope happens to have exactly the semantics needed to make stuff work right here and right now, with no relation to possible improvements of ref and rvalue/lvalue system.

Reply via email to