Attributes lost in TypeInfo, please advise

Adam D. Ruppe via Digitalmars-d digitalmars-d at puremagic.com
Wed Feb 11 20:18:04 PST 2015


On Thursday, 12 February 2015 at 04:08:23 UTC, Jakob Ovrum wrote:
> Is it possible to call the destructor or postblit constructor 
> directly

yes, they are available as obj.__dtor() and obj.__postblit(); 
But...

> and will they correctly destruct/copy recursively

No.

extern(C)
@trusted void printf(const char*);
struct Child {
         @safe ~this() { printf("child dtor\n"); }
}
struct Parent {
         Child c;
         @safe ~this() { printf("parent dtor\n"); }
}
void main() @safe {
         Parent p;
         p.__dtor();
}


parent dtor // this is the one from the p.__dtor
    // note it did NOT run child dtor
parent dtor  // the natural destruction from going out of scope
child dtor  // ...which also calls the child



So you'd have to loop through all members in a custom destroy 
function and call them yourself. Then attribute inference should 
work.


More information about the Digitalmars-d mailing list