On Tue, 31 Jan 2012 16:42:52 +0100, Zachary Lund <[email protected]> wrote:

On Tuesday, 31 January 2012 at 15:19:00 UTC, Trass3r wrote:
However, I cannot, by default, scope my custom allocations.
Any ideas?

std.typecons.scoped

I looked into this and I'm unsure of its exact use. It says, "Allocates a class object right inside the current scope" which doesn't really define how it's allocated nor does it explain how this would work with custom de/allocators. Also, it claims it "avoids" the overhead of new of which I'm not entirely sure of what it means. Could some clarification be made?

If scoped is used inside a struct or class, it allocates the space within
that struct or class. If used inside a function, the space is allocated
on the stack. The size of the allocated buffer must be known at compile
time, so you may not put an instance of a subclass into a scoped variable.

Because the class may be allocated on the stack, returning it from a
function is a Bad Idea™, unless it's part of a struct or class you know
will survive for a while longer.

The reason it avoids the overhead of new is it does not allocate using
new. Basically, Scoped does this:

class A {}

A scoped = cast(A)alloca(sizeof(A));
A.__ctor(args);

Reply via email to