On 13/07/2010 22:58, Andrei Alexandrescu wrote:
On 07/13/2010 04:42 PM, Vladimir Panteleev wrote:
On Wed, 14 Jul 2010 00:33:20 +0300, bearophile
<bearophileh...@lycos.com> wrote:
Vladimir Panteleev:
ARGHARGHARGH
There is emplace() now. I don't know how much good it currently is.
I know that I can do this manually in other ways, the problem is that
this creates verbose and unintuitive code.
I agree. I think we should, again, define two primitives:
T* malloc(T, A...)(A args) if (!is(T == class) && !isDynamicArray!T);
T malloc(T, A...)(A args) if (is(T == class) || isDynamicArray!T);
free(T)(ref T obj);
The first two call C's malloc, constructor (if any), and returns the
allocated object. The last calls the destructor (if any) and then free().
worksforyou?
Andrei
Are they going to register the range with the GC for scanning?
If so then fine. I do stuff where I've got deterministically allocated
structs which can wind up having the only live references to other GC
objects.
Though perhaps we could have 2 different functions, one that registers
the object with the GC & one without. Being able to easily mix & match
memory strategies is a great feature so it would be nice to still be
able to easily do it, even if you make it all library functions with
great big 'Danger Will Robinson!' stickers all over it.
--
My enormous talent is exceeded only by my outrageous laziness.
http://www.ssTk.co.uk