{
SharedPtr!long x = SharedPtr!long.make(123);
assert(*x.element == 123);
x.get = 321;
assert(*x.element == 321);
const y = x;
assert(*y.element == 321);
assert(*x.element == 321);
static assert(is(typeof(y.element) == const(long)*));
}
{
auto x = SharedPtr!(long[]).make(6, 42);
assert(x.element[0] == 42);
static assert(is(typeof(x.element) == long[]));
}
{
auto s = SharedPtr!long.make(42);
const w = s.weak;
assert(*w.element == 42);
s = null;
assert(w.element is null);
}
{
auto s = SharedPtr!long.make(42);
auto w = s.weak;
scope const p = w.element;
s = null;
assert(w.element is null);
assert(p !is null); //p is dangling pointer!
}
Get pointer to managed object of ElementType or reference if ElementType is reference type (class or interface) or dynamic array.
If this is weak expired pointer then return null.
Doesn't increment useCount, is inherently unsafe.