auto storage class - infer or RAII?

Tom tom at nospam.com
Sat Nov 11 20:26:28 PST 2006


Walter Bright wrote:
> The auto storage class currently is a little fuzzy in meaning, it can 
> mean "infer the type" and/or "destruct at end of scope". The latter only 
> has meaning for class objects, so let's look at the syntax. There are 4 
> cases:
> 
> class Class { }
> 
> 1) auto c = new Class();
> 2) auto Class c = new Class();
> 3) auto c = some_expression();
> 4) auto Class c = some_expression();
> 
> The ambiguity can be resolved by saying that if auto is used for type 
> inference, i.e. cases (1) and (3), then it does not mean RAII. If it is 
> not used for type inference, i.e. cases (2) and (4), then it does mean 
> RAII.
> 
> In the future, I'd like the following to work:
> 
> 5) auto c = Class();
> 
> which would mean type inference *and* RAII.

No, I don't like it, it's awful.

As others, I think two different keywords should be added to separate 
concepts (I do specially agree with Derek).

The 'scope' keyword would be nice for raii ('local' could also work but 
not so clearly with raii classes).

For type inference I like 'infer' as it has been suggested.

Regards,
--
Tom;



More information about the Digitalmars-d mailing list