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