https://issues.dlang.org/show_bug.cgi?id=16683
Walter Bright <bugzi...@digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bugzi...@digitalmars.com --- Comment #3 from Walter Bright <bugzi...@digitalmars.com> --- In order to get this to work, it would have to have a druntime template that generates the following info for the typeid: { void **vptr; monitor_t monitor; byte[] m_init; // static initialization data string name; // class name void*[] vtbl; Interface[] interfaces; ClassInfo base; // base class void* destructor; void function(Object) classInvariant; // class invariant ClassFlags m_flags; void* deallocator; OffsetTypeInfo[] offTi; void function(Object) defaultConstructor; //const(MemberInfo[]) function(string) xgetMembers; // module getMembers() function immutable(void)* m_RTInfo; //TypeInfo typeinfo; } which is what the compiler does in the toobj.d module in the visit(ClassDeclaration cd) function. Doing this is fairly complex, depending on how far one wishes to go with it - for example, preparing the initializer for the .vtbl field is quite daunting. Perhaps have the compiler provide that via a __traits? That would relieve some of the complexity of doing this. Or maybe have the compiler still generate this data, but only to make it accessible via __traits() and then have the druntime template cherry pick it as necessary? --