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

Reply via email to