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;
}
}