On 9/7/2016 5:07 AM, Ethan Watson wrote:
But ignoring that. My first member is offset by 8 bytes, even in an extern( C++
) class. I assume it's just blindly sticking a vtable in there regardless of if
I actually define virtual functions or not.

This came up before with Manu's desire to match complex C++ hierarchies that are, in essence, multiple inheritance even if they didn't look like multiple inheritance. D only supports multiple inheritance as interfaces. Having C++ classes with no _vptr means multiple inheritance (I know this isn't obvious why, but if the details are worked through it is inevitable.)

I suggested to Manu some ways to get a workalike, but I don't recall what they 
were.

Supporting MI is not impossible as a D enhancement, but it would entail a fair amount of rework as the compiler internals just don't work that way. If and until such a time as that is done, having classes with no _vptr isn't going to work.

Reply via email to