On Thursday, 22 June 2017 at 19:17:13 UTC, Ali Çehreli wrote:
No time to think about the rest of the design but just to get the code compiled, replace 'ref' with 'auto ref' like so:

Ok, looks like this indeed passes rhs by reference, thank you.

destcalls - number of times UniquePtr destructor was called
deallocs - number of times internal pointer was freed.

unittest
{
    deallocs = destcalls = 0;

    class A {}
    class B: A {}

    {
        UniquePtr!B b = UniquePtr!B.make();
        assert(b.owner);
        {
            UniquePtr!A a = b;
            assert(!b.owner);
            assert(a.owner);
            assert(destcalls == 0);
            assert(deallocs == 0);
        }
        assert(destcalls == 1);
        assert(deallocs == 1);
    }
    assert(destcalls == 2);
    assert(deallocs == 1);
}


Reply via email to