Are D classes always garbage collected?

Vladimir Panteleev vladimir at
Wed Dec 21 21:01:53 PST 2011

On Thursday, 22 December 2011 at 04:15:25 UTC, Froglegs wrote:
>>> You can allocate classes anywhere, if you're OK with 
>>> forfeiting safety guarantees. For example, see emplace in 
>>> std.conv:
> Hum calling emplace ending up calling this bit of code..
> T* emplace(T)(T* chunk)
>   if (is(T == class))
> {
>   *chunk = null;
>   return chunk;
> }
> Which returned me a nice fat null pointer.. wth? Perhaps that 
> should be a compile time error if you aren't supposed to use 
> classes..

Strange... I'm not sure what the deal is with that overload. I 
meant the last one on the page (that takes a void[]).

> I tried placement new syntax but this tells me I need an 
> allocator, whatever that means..

Note that this feature is on its way to be deprecated. emplace 
and clear are the future-proof method.

More information about the Digitalmars-d-learn mailing list