Are D classes proper reference types?
Ola Fosheim Grøstad
ola.fosheim.grostad at gmail.com
Sat Jun 26 13:49:25 UTC 2021
On Saturday, 26 June 2021 at 07:39:44 UTC, kinke wrote:
> I'm pretty sure I haven't seen a weak pointer in C++ yet. I
> don't look at C++ much anymore, but I suspect they are even a
> lot rarer than shared_ptr.
Weak pointers are usually not needed, but sometimes you do need
them and then not having them becomes a big weakness. Usually
ones strives to have ownership defined in a way that makes it
possible to dismantle a graph in a structured way from a single
thread, and then weak pointers are not needed at all.
> Wrt. mixed class hierarchies, being able to inherit from and
> instantiate C++ classes in D is of some priority and mostly
> works today. (Let's not get into discussing multiple
> inheritance here, it's hardly a show-stopper for most use
> cases.)
Is it possible to inherit from a C++ class and get a D subclass,
and is it possible to inherit from a D class and get a C++ class?
> Is Swift a thing outside the Apple universe (I admittedly
> despise ;))? It's surely much better than their Objective-C
> crap, but still...
The Apple universe is pretty big, we can dislike that, but that
does not change the market…
So the goal would be to put the ref-count on a negative offset so
that the layout can match up with C++ or Swift. I don't think
that implies any big disadvantages, but I could be wrong. The
only way to find out is to hash out the alternatives.
> So for rare use cases like shared_ptr/weak pointer interop, a
> library solution (just like they are in C++) is IMO enough.
But the best solution is to get to a place where you can hand
D-objects to other languages with ease without doing a runtime
conversion from one layout to another.
More information about the Digitalmars-d-learn
mailing list