important proposal: scope keyword for class members

Sean Kelly sean at invisibleduck.org
Sat Mar 7 08:06:56 PST 2009


Sean Kelly wrote:
> John Simon wrote:
>> I'd like to propose a new use for the 'scope' keyword within an 
>> aggregate body.
>>
>> Members of class type declared with the scope keyword are allocated 
>> not as references or pointers, but initialized directly inside the 
>> container.  Instead of a default initializer of 'null', it will 
>> initialize with the default constructor of the class, or an optional 
>> assignment after the declaration. Any 'new [type]' within the 
>> assignment will resolve to a simple call to the type's __ctor, instead 
>> of a memory allocation.
> 
> A while back, Walter said that he planned to do exactly this.  I'm not 
> sure what the timetable is though, or if plans have changed.

Oh, I should mention that I'm not sure how the compiler would handle 
this scenario:

class A { byte[16]; }
class B { byte[32]; }
class C {
     this( bool b ) {
         if( b ) o = new A;
         else    o = new B;
     }
     scope Object o;
}

If I had to guess I'd say that the compiler would either reserve the max 
size necessary to store both A or B, or that in non-trivial cases it 
just wouldn't bother with reserving space for o at all.



More information about the Digitalmars-d mailing list