Function SharedPtr.lock

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

SharedPtr.SharedType lock() scope;

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

Examples

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

	auto w = x.weak;    //weak ptr

	SharedPtr!long y = w.lock;

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

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

	auto w = x.weak;    //weak ptr

	assert(w.expired == false);

	x = SharedPtr!long.make(321);

	assert(w.expired == true);

	SharedPtr!long y = w.lock;

	assert(y == null);
}