DIP25 draft available for destruction
Zach the Mystic
reachBUTMINUSTHISzach at gOOGLYmail.com
Thu Feb 7 16:21:19 PST 2013
On Thursday, 7 February 2013 at 19:49:27 UTC, Walter Bright wrote:
> On 2/7/2013 6:15 AM, Zach the Mystic wrote:
>> Can you tell me if you consider my proposal with regard to
>> making ref safe and
>> complete simple and intuitive both for compiler and user, and
>> if not, why? (I
>> don't have an opinion about '&' yet.)
>>
>> http://forum.dlang.org/thread/ket199$2c27$1@digitalmars.com#post-bsgrtofehxfjmzkaedfr:40forum.dlang.org
>>
>
> I don't know if it's complete and safe. It's not something that
> can be determined with a quick read.
Okay. But at least that's a 'check' on simple and intuitive?
As far as why I think it's safe, my investigation led me to
conclude that the key question was, how do I know whether to
treat the return value of a ref function which accept a ref as
local or global? I pass a value into a mysterious box, how do I
know whether what comes out the other end is related to what I
passed in, or something completely different? All the cases DIP25
takes care of are the ones which can be known just by the
peculiarities of the call and signature, but many cases just
leave you in the dark. The only way the compiler can know for
sure without help from the function signature is by dipping into
the function's code to take a look, which seems like too high a
price to pay. About a month ago Jonathan M Davis brought this up
and pointed out that the PIMPL idiom occasionally banishes
altogether that opportunity for the compiler.
After a few tries, I realized that 'out' was actually still
available to use for this purpose, which is either pure luck
(possible) or a hidden byproduct of the fact that 1) it's a good
keyword to begin with or 2) there's a secret truth to its
interchangeability with 'ref' which applies to return values as
well as to parameter tags.
More information about the Digitalmars-d
mailing list