On Saturday, 27 May 2017 at 17:22:02 UTC, Stanislav Blinov wrote:
But they are incompatible precisely because structs "don't have it". Inheritance for one. Reference semantics for another. A class reference is a pointer in disguise, struct is full layout on the stack. The only way to retain inheritance and reference semantics while removing "class" keyword would be not to merge classes into structs, but structs into classes. And then what, always allocate on the heap?
I don't understand this argument, why would this be more difficult for D than C++?
You lower class into struct (with virtual, interfaces, whistles and bells) and retain reference semantics by making it unavailable for D-move-semantics.
Which is all possible as a library with zero language changes. But for that to work, classes shall remain classes and structs shall remain structs.
Huh?
If that were true, we wouldn't even need the "extern(C++)", would we?
Sounds more like an implementation detail to me.
