RcPtr.lock

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

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

struct RcPtr
scope
lock
()
()
if (
isCopyConstructable!(typeof(this), SharedType)
)

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);
}

Meta