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