Denis Koroskin Wrote:

> I think RefCounted should be flexible enough to re-usable for other data  
> structures, too (e.g. so that it could be part of Phobos).
> 

I agree. However this code goes into core, so it can't use Phobos.

> By the way, your code has a bug:
> 
> Tid tid; // or release() and exisiting Tid
> Tid tid2 = tid; // segfault since you don't check if _cnt is null in  
> postblit

I realize that, but I'm not sure if this would be a library bug or a user bug. 
I wish one could just prevent such usage, e.g., by nulling the default 
constructor:

struct Tid {
    this() = null;
    ...
}

This is a more general problem of the absence of user-defined default 
constructors for structs. This makes perfect sense for PODS, but not for 
structs that have a destructor (and postblit). Of course, if the default 
constructor is blocked, you wouldn't be able to have arrays of such structs, 
which, as a side effect, would eliminate the problem of exceptions thrown from 
default constructors and array unwinding. It's a bit of a minefield there.

Reply via email to