auto storage class - infer or RAII?

Kristian Kilpi kjkilpi at gmail.com
Mon Nov 13 10:15:28 PST 2006


On Mon, 13 Nov 2006 19:24:21 +0200, Tomas Lindquist Olsen  
<tomas at famolsen.dk> wrote:

> JC wrote:
>> "Walter Bright" <newshound at digitalmars.com> wrote in message  
>> news:ej9acb$1sac$2 at digitaldaemon.com...
>>> Tomas Lindquist Olsen wrote:
>>>> *shivers* by the thought of 'var'
>>> I knew that somehow I couldn't be the only one <g>.
>>  I don't see much wrong with 'var'.
>
> My issue with 'var' is that it looks ugly and doesn't really tell you  
> that RAII is in action.

Well that's the point because 'var' isn't used with RAII but with type  
inference only. ;)

'var' just tells you that this is a variable declaration, and that's why I  
like it for TI.


>> It has the nice connotation that it represents a variable, at least.
>
> The other storage classes work for variables too!
>
>> As for RAII, just using a keyword alone doesn't seem to cut it. If  
>> references are to be automatically deleted at the end of a scope, that  
>> infers that a scope is actually introduced, which to me is signified by  
>> a matching pair of curly brackets. I'd like to be able to specify the  
>> extent of the scope, perhaps like this:
>>  void drawBox(Rectangle rect, Colour colour) {
>>   scope (DrawingContext dc = createDrawingContext()) {
>>     scope (Pen pen = new Pen(colour)) {
>>       dc.drawRectangle(pen, rect);
>>     } // pen is freed here
>>   } // dc is freed here
>> }
>>  Used this way, 'scope' as the RAII keyword makes sense.
>
> *Please* no!

Also I don't like this syntax. All variables should always be declared at  
the begining of blocks.



More information about the Digitalmars-d mailing list