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