On Tue, 28 Feb 2012 09:30:12 +0100, Timon Gehr <timon.g...@gmx.ch> wrote:

On 02/27/2012 03:42 PM, Martin Nowak wrote:
...
https://gist.github.com/1920202

Neat. Possible improvement (if I understand your code correctly):
Don't add the GC range if all possible aliasing is through Ptr.

I hope I did that.

import smart_ptr;

struct S{
     Ptr!int a;
     Ptr!double b;
}

static assert(hasAliasing!S);

All right, I would need a Ptr aware hasAliasing, that's true.
That's one of the few places where C++'s lookup rules for template
specializations are useful. std.traits.hasAliasing already has Rebindable hacks.

Either way I had an idea to split this into two parts.
- unique_ptr which handles ownership and destruction, could be Unique!(Scoped!T) as well. - A move-on-shared wrapper, that has value semantics unless it gets shared, in which
  case the value is moved to a refcounted heap store.

Reply via email to