On Thursday, 11 April 2013 at 09:27:11 UTC, kenji hara wrote:
No. In this case, it is the purpose of 'scope ref', not is the
implementation details.

What is the language semantics and what is the implementation detail - that varies depending on what is properly supported in the language. D explicitly distinguishes lvalues and rvalues, and also defines that rvalue
cannot be taken its address (== reference).

The purpose of 'scope ref' is that the parameter can be received both lvalues and rvalues with one function body. To receive lvalues, scope ref should take the address of them. As a conclusion, to receive rvalues
temporary creation is necessary in caller site.

Yes, it mostly represents implementation details, but it is still
description of language semantics.
This confusion is almost inevitable. Because the essential purpose of
'scope ref' is already "efficiency".

Furthermore, note that the desired "efficiency" is not "the speed of
argument passing".
I recognize that it is "to avoid code bloating of function body". If you need "most efficient argument passing", you should choose it from the argument type. 'scope ref' is not a thing to make the choice automatic.

Kenji Hara

I trust your judgement then, will update DIP then. But I am still afraid of confusion.

Reply via email to