Function SharedPtr.opCastImpl
Cast this
to different type To
when isSharedPtr!To
.
To opCastImpl(To, This)() scope
if (isSharedPtr!To && !is(This == shared));
BUG
qualfied variable of struct with dtor cannot be inside other struct (generated dtor will use opCast to mutable before dtor call ). opCast is renamed to opCastImpl
Examples
SharedPtr!long x = SharedPtr!long .make(123);
auto y = cast(SharedPtr!(const long))x;
auto z = cast(const SharedPtr!long)x;
auto u = cast(const SharedPtr!(const long))x;
assert(x .useCount == 4);