clear()
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Fri Oct 9 12:01:30 PDT 2009
Andrei Alexandrescu wrote:
> Jacob Carlborg wrote:
>> On 10/9/09 18:40, Andrei Alexandrescu wrote:
>>> I'm talking with Sean and Walter about taking the first step towards
>>> eliminating delete: defining function clear() that clears the state of
>>> an object. Let me know of what you think.
>>>
>>> One problem I encountered is that I can't distinguish between a default
>>> constructor that doesn't need to exist, and one that was disabled
>>> because of other constructors. Consider:
>>>
>>> class A {}
>>> class B { this(int) {} }
>>>
>>> You can evaluate "new A" but not "new B". So it's legit to create
>>> objects of type A all default-initialized. But the pointer to
>>> constructor stored in A.classinfo is null, same as B.
>>>
>>> Any ideas?
>>>
>>>
>>> Andrei
>>
>> How about this:
>>
>> static if (is(typeof({
>> auto t = new T;
>> })))
>
> I'm in awe. Thanks, Jacob!!!
>
> Andrei
Oh, wait, that doesn't work:
class A {}
class B : A { this(int) {} }
A a = new B;
clear(a); // oops
Andrei
More information about the Digitalmars-d
mailing list