On Monday, 12 October 2015 at 08:49:24 UTC, Jonathan M Davis
wrote:
On Monday, 12 October 2015 at 08:21:24 UTC, Kagamin wrote:
On Thursday, 8 October 2015 at 14:13:30 UTC, Jonathan M Davis
wrote:
I've programmed extensively in C++ with smart pointers, and
in my experience, circular references are rarely a problem.
There are some cases where it's obvious that you have one
(e.g. where one object owns another and they need to talk to
each other), in which case you either use a normal pointer or
a weak reference, depending on which makes more sense. And in
the cases that you don't catch, you find them in testing,
figure out what should be a weak reference to get rid of the
circular dependency, you fix it, and you move on. It really
isn't a big deal in general, though I suppose that there
could be certain ways of designing programs where it would be
more problematic.
That's all understandable. What's not understandable is when
one insists that a necessity to figure out ownership for every
non-resource object in C++ is superior to D.
If you don't want to care about ownership, then use a GC. The
only other memory management model that I can think of where
you don't have to care about ownership is when everything is a
value type on the stack, so there's nothing to own.
There are pros and cons to using a GC, and there are pros and
cons to use reference counting everything on the heap. I don't
think that either is objectively superior. It all depends on
what you're trying to do and what your requirements are.
- Jonathan M Davis
Well technically, there is still ownership: the GC owns
everything. But yeah, you don't need to care about for this very
reason.