Suggestion: common & polish constructors (+ destructors)

Georg Wrede georg.wrede at nospam.org
Fri Nov 3 08:01:16 PST 2006


Kristian Kilpi wrote:
> On Fri, 03 Nov 2006 14:33:20 +0200, Bill Baxter <wbaxter at gmail.com> wrote:
> 
>> Kristian Kilpi wrote:
>>
>>>  It would be nice if you could add code into constructors (and  
>>> destructors)  with mixins. For example, you could initialize member  
>>> objects/structures  added by a mixin, etc.
>>> [snip]
>>> And finally, there should also be common destructors (e.g.   
>>> '~common_this()', 'finish_this()', 'destroy_this()') to be used 
>>> with   mixins. This way each mixin could add code to the actual 
>>> destructor.
>>
>>
>> Actually what you suggest seems to already be the case for 
>> destructors.    Don't know if it's in the spec, but I just noticed it 
>> yesterday.
>>
>>
>> template Death(int i)
>> {
>>      ~this() {
>>          writefln("Death says: see you! ", i);
>>      }
>> }
>> class DClass
>> {
>>      mixin Death!(1);
>>      mixin Death!(2);
>>      mixin Death!(3);
>>
>>      ~this() {
>>          writefln("Class bye bye!");
>>      }
>>
>>      mixin Death!(4);
>>      mixin Death!(5);
>>      mixin Death!(6);
>> }
>>
>> The destructors get called in reverse order of appearance within DClass.
>>
>> --bb
> 
> 
> Well now, that's nice. :)
> 
> This feature is not yet documented, maybe Walter is experimenting 
> things  for future releases... Hopefully we'll have something like it 
> for the  ctors also.

I wonder if this is an accidental artifact of compiler internals?

I don't remember seeing any justifications for this behavior.



More information about the Digitalmars-d mailing list