TDPL: Manual invocation of destructor
    Andrei Alexandrescu 
    SeeWebsiteForEmail at erdani.org
       
    Mon Aug  9 17:53:16 PDT 2010
    
    
  
Jonathan M Davis wrote:
> On Monday, August 09, 2010 16:40:23 Andrei Alexandrescu wrote:
>> class File {
>>      FILE * fp;
>>      this() { fp = fopen("/tmp/temporary"); }
>>      ~this() { fclose(fp); }
>> }
>>
>> The destructor does not test fp because it assumes it was opened.
>>
>> Interestingly enough, by TDPL the code above is in fact invalid already.
>> TDPL mentions that an object's lifetime starts as soon as it's been
>> branded, which is before default construction. As a direct consequence,
>> the destructor should be able to deal with an object stamped with all
>> init values for all fields - in this case a null fp.
> 
> I would take that as an argument for making clear() set the object in the state 
> prior to the constructor call.
[snip]
I agree. Do others?
Andrei
    
    
More information about the Digitalmars-d
mailing list