On Friday, 25 June 2021 at 17:05:41 UTC, Ola Fosheim Grøstad wrote:
Yes, if you don't want to support weak pointers. I think you need two counters if you want to enable the usage of weak pointers.

I cannot imagine how weak pointers would work without an ugly extra indirection layer. If we're on the same page, we're talking about embedding the reference counter *directly* in the class instance, and the class ref still pointing directly to the instance.

Weak pointers aren't in the language, so I don't see why they would matter here. I thought you were after replacing GC-allocated class instances by a simple RC scheme.

One reason to put it at a negative offset is that it makes it possible to make it fully compatible with shared_ptr.

In modern C++ code I've been looking at so far, shared_ptr was used very rarely (and unique_ptr everywhere). AFAIK, the main reason being poor performance due to the extra indirection of shared_ptr. So replacing every D class ref by a shared_ptr-analogon for interop reasons would seem very backwards to me.

Reply via email to