destroy

fnvoid destroy(bool initialize = true, T)(ref T obj) if (is(T == struct))

Destroys the given object and optionally resets to initial state. It's used to _destroy an object, calling its destructor or finalizer so it no longer references any other objects. It does not initiate a GC cycle or free any GC memory. If initialize is supplied false, the object is considered invalid after destruction, and should not be referenced.

fnvoid destroy(bool initialize = true, T)(T obj) if (is(T == class))

ditto

fnvoid destroy(bool initialize = true, T)(T obj) if (is(T == interface))

ditto

fnvoid destroy(bool initialize = true, T)(ref T obj) if (__traits(isStaticArray, T))

ditto

fnvoid destroy(bool initialize = true, T)(ref T obj) if (!is(T == struct) && !is(T == interface) && !is(T == class) && !__traits(isStaticArray, T))

ditto