What would break if class was merged with struct

Stanislav Blinov via Digitalmars-d digitalmars-d at puremagic.com
Sat May 27 09:04:42 PDT 2017


On Saturday, 27 May 2017 at 14:12:09 UTC, Ola Fosheim Grøstad 
wrote:
> I wonder, what would break if all the features of class was 
> merged into struct?
>
> Imagine that:
>
>     class Something ... { ... }
>
> is lowered into:
>
>     struct _class_Something ... { ... }
>     alias Something = MagicClassRef!_class_Something;
>
> Is it conceivable with some language changes, a bit of 
> automated source updating and a little bit of breakage?

It's not "a little bit", it's ABI down the drain, along with a 
good part of runtime. And we'd lose interfaces and extern(C++).

That being said, it is totally possible today to have struct 
wrappers over classes, both malloc'ed and stack-allocated. The 
problem is that destruction is always @system (due to reasons 
described in my "Destructor attribute inheritance" thread: 
http://forum.dlang.org/thread/wtxkfylodzaaifojaglr@forum.dlang.org). And one has to adopt a discipline not to escape references.

Once DIP1000 is fully realized, at least the latter part will 
become unnecessary.


More information about the Digitalmars-d mailing list