On Saturday, 27 May 2017 at 16:37:04 UTC, Ola Fosheim Grøstad wrote:
On Saturday, 27 May 2017 at 16:31:32 UTC, Stanislav Blinov wrote:
There's a lot more difference in D. Classes in D are fat memory chunks storing pointers to ClassInfo (inc. vtable),

So are classes with virtual functions in C++, to get RTTI you need to have a virtual member function. I don't see the big difference.

But structs in D have none of that.

Monitor (i.e. for "synchronized") and

Wasn't this going to be removed?

Not that I'm aware of.

a list of all interfaces they implement,

Semantically roughly the same as multiple-inheritance in C++ but more limited.

If we were to remove all that, we'd lose the semi-natural way of interfacing to C++ classes, and some pretty horrendous code involving void* and void** would have to be used.

I don't understand what you mean here.

If your "struct _class_SomeThing" would simply describe the same memory layout of classes that we have today, then no language change is necessary, it's purely a library solution. Well... maybe we'd need to add class postblits if we wanted copying (which can also be done by hand with a library "clone" function and a "special" static __postblit function).

If not, then it gets complicated, as in order to retain an interface with C++ classes, D would either have to follow C++ ABI (he-he), or at the very least put the burden of mapping member function calls on the programmer.

Reply via email to