Just noticed an odd thing when I was trying Jacob's code. This works great: auto x = new someClass(); Object o = x; void delegate() dg; foreach(i, m; __traits(derivedMembers, someClass)) { writeln("i=", i, " m=", m);
if(m != "__ctor") { dg.funcptr = cast(void function()) o.classinfo.vtbl[i + 6]; dg.ptr = cast(void*) o; dg(); } } but this doesn't (it segfaults): Object o = Object.factory("someClass"); void delegate() dg; foreach(i, m; __traits(derivedMembers, someClass)) { writeln("i=", i, " m=", m); if(m != "__ctor") { dg.funcptr = cast(void function()) o.classinfo.vtbl[i + 6]; dg.ptr = cast(void*) o; dg(); } } Is the object returned by Object.factory() not the same somehow as the one returned by new()? John