Why will the delete keyword be removed?
Max Samukha
spambox at d-coding.com
Wed Jul 14 12:38:47 PDT 2010
On 07/14/2010 12:50 AM, Andrei Alexandrescu wrote:
> On 07/13/2010 03:51 PM, Trass3r wrote:
>> Does it really add so much complexity to the compiler that it's worth
>> removing?
>
> It adds misconception and confusion. delete must disappear from D.
>
> Andrei
FWIW, the current implementation of clear() has at least one problem
that guarantees my not using it: the default constructor may be
arbitrarily complex (for example, it may allocate an expensive
resource), so running it on the dead object is not acceptable.
Also, as other people mentioned, resurrecting the dead object prevents
the program from failing early in case a dangling pointer to that object
gets dereferenced.
I'd probably want clear() to run the destructor and zero the object's
memory. This way the objects the dead object may reference can be GCed
even in the presence of dangling pointers the dead object. Additionally,
the probability of the program failing early on a dangling pointer
dereference is high because the vtable pointer is null (any virtual call
is bound to fail).
Or something like that.
More information about the Digitalmars-d
mailing list