Is D 0.163 D 1.0?

Chad J gamerChad at _spamIsBad_gmail.com
Tue Jul 25 01:08:25 PDT 2006


Walter Bright wrote:
> Derek wrote:
> 
>> On Mon, 24 Jul 2006 00:33:23 +0000 (UTC), Andrei Khropov wrote:
>>
>>> And what about double meaning of 'auto'?
>>
>>
>> In general 'auto' is a poor choice for both meanings. 'auto' is obviously
>> shorthand for automatic, but automatic what???
>> Walter, given that 'auto' as a keyword is not going to be removed from 
>> the
>> language, how can one currently declare a type-inferred variable that has
>> RAII properties?
>>
> 
> Regan Heath penned the solution I thought I'd posted a while back, but 
> maybe I hadn't:
> 
>> class A {}
>>
>> A a = new A(); //normal
>> A a = A(); //destroyed at end of scope
>>
>> and with auto..
>>
>> auto a = new A(); //normal
>> auto a = A(); //destroyed at end of scope
>>
>> Simple, elegant, obvious (IMO) 
> 
> 

Myself I would prefer not to have that.  It creates an ambiguity between 
  a static opCall on A and the storage attribute.
So:

class A
{
   static A opCall() { ...do something... }
}

A a = A(); // destroyed at end of scope, or call A.opCall()?

I prefer the storage attribute have it's own keyword.  Perhaps give 
storage 'auto' and type inference 'var'.  For me, that makes it more 
obvious, since to my eyes it would be a keyword that I've never seen 
before and now need to look up in the spec - otherwise it's just a 
static opCall :(.



More information about the Digitalmars-d mailing list