important proposal: scope keyword for class members

Christopher Wright dhasenan at gmail.com
Sat Mar 7 10:57:22 PST 2009


Sean Kelly wrote:
> Andrei Alexandrescu wrote:
>> 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.
>>
>> I'd be happier if we investigated scope in classes as an ownership 
>> mechanism. In-situ storage is nice, but ownership management is more 
>> important.
> 
> Yeah, in-situ storage would just be a QOI feature like it is for scope 
> variables at function level.  I agree that the logical effect of scope 
> at class level is more important.

You're talking about something like this?
class A
{
	scope Object o;
	this ()
	{
		o = new Object;
	}
}

converts to:
class A
{
	Object o;
	this ()
	{
		void* ptr = gc.allocAndIgnore(Object.classinfo.size);
		o = new(ptr) Object;
	}
	~this ()
	{
		delete o;
	}
}



More information about the Digitalmars-d mailing list