On Saturday, 14 November 2015 at 16:05:10 UTC, Andrei
Alexandrescu wrote:
Technically, that clearly works. There's a problem with scaling
it up:
COMPOSITION
Disallowing immutable(RC!T) in favor of RC!(immutable T)
effectively disables composition of larger immutable objects
from smaller ones.
Yeah, I totally agree, I by no means think that external
reference counting is some kind of silver bullet - as proven time
and again, it is rife with issues when applied generally. I just
wanted to point out, since a lot of lay people read these
threads, that it will continue to be an option. I look forward to
see what kind of memory safe reference counting you PL buffs will
figure out.
One obvious thing to do is with a reference counted object it
to make it a field of a larger object. That effectively makes
that larger object impossible to be used with immutable,
transitively.
Random off-topic thought (sorry): maybe the immutable larger
object could survive if there was a way to make
immutable(RefCounted!T) behave like immutable(Unique!T). It would
be uncopyable (non-copyable? Damn you, boost!) but perhaps still
usable. I guess it would still need a cast for
`free`/`deallocate` in the destructor.