Function RcPtr.lock

Creates a new non weak RcPtr that shares ownership of the managed object (must be RcPtr.WeakType).

RcPtr.SharedType lock() scope;

If there is no managed object, i.e. this is empty or this is expired, then the returned RcPtr is empty. Method exists only if RcPtr is isWeak

Examples

{
    RcPtr!long x = RcPtr!long.make(123);

    auto w = x.weak;    //weak ptr

    RcPtr!long y = w.lock;

    assert(x == y);
    assert(x.useCount == 2);
    assert(y.get == 123);
}

{
    RcPtr!long x = RcPtr!long.make(123);

    auto w = x.weak;    //weak ptr

    assert(w.expired == false);

    x = RcPtr!long.make(321);

    assert(w.expired == true);

    RcPtr!long y = w.lock;

    assert(y == null);
}