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