Johan Engelen wrote:
If this is the case, then we really need to improve and pin-down the spec
on this point.
So `destroy` only calls the destructor and puts the object in
`T.initializer` (non-constructed) state, and is otherwise not related to
memory deallocation.
May the destructor be called again when the GC collects the memory?
Why is the object put in `T.initializer` state?
To make sure: My question is from a spec point of view. Not about what
currently happens and what is "OK" with the current implementation.
afair, somewhere in the spec there is a mention that dtor will be called
at most once for each initialized object. and object state doesn't have any
sense after calling dtor, but D still has to put something there, so
`.init` looks like a reasonable choice. althru i'm not sure that anything
in specs says that runtime *must* clear destroyed objects (they aren't
really usable after calling dtor anyway, it is at least a logical bug to use
object after destroying it).