Is D 0.163 D 1.0?

Derek derek at psyc.ward
Tue Jul 25 04:39:29 PDT 2006


On Tue, 25 Jul 2006 00:53:02 -0700, 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)

I'm sorry but I'm just not getting it. I just tried this example using
v0.163 and it fails to compile. I did ask "how can one *CURRENTLY* declare
...". So I guess one can't do it just now and the example is something yet
to be implemented. 

If so, it means that the opCall paradigm will be removed from classes. Is
that intentional?

And I assume that if the class was declared as ...

  auto class A {}

then every object declared with the class would have to be ..

  A a = A();
or
  auto a = A();

But how does this proposed syntax handle variable-length arrays?

  char[] a = read(filename);

Is 'a' destroyed at end of scope?

It seems to me that the implied 'destroy at end of scope' idea is not a
good one. It needs explicit designation to make it clear to readers and
coders alike. That must also help compilers in detecting coding mistakes
too.

-- 
Derek Parnell
Melbourne, Australia
"Down with mediocrity!"



More information about the Digitalmars-d mailing list