On 06/26/2013 12:50 AM, Adam D. Ruppe wrote:
> On Tuesday, 25 June 2013 at 22:22:09 UTC, cybervadim wrote:
>> (introducing a new keyword allocator)
>
> It would be easier to just pass an allocator object that provides the
> necessary methods and don't use new at all. (I kinda wish new wasn't
> in the language. It'd make this a little more consistent.)
>

I did think about this as well, but than I came up with something that
IMHO is even simpler.

Imagine we have two delegates:

void* delegate(size_t);  // this one allocs
void delegate(void*);    // this one frees

you pass both to a function that constructs you object. The first is
used for allocation the
memory, the second gets attached to the TypeInfo and is used by the gc
to free
the object. This would be completely transparent to the user.

The use in a container is similar. Just use the alloc delegate to
construct the objects and
attach the free delegate to the typeinfo. You could even mix allocator
strategies in the middle
of the lifetime of the container.

Reply via email to