Thread overview
How to cast away shared?
August 03

Any way to 'cast away' shared for an unknown type T?

August 03

On Wednesday, 3 August 2022 at 12:50:17 UTC, Ruby The Roobster wrote:

>

Any way to 'cast away' shared for an unknown type T?

There's actually an Unshared template for this in std.traits, but for some reason it's private, so you can't use it directly. Fortunately, it's only two lines:

alias Unshared(T) = T;
alias Unshared(T: shared U, U) = U;

Once you have this, you can write cast(Unshared!T).

August 03

On Wednesday, 3 August 2022 at 13:00:05 UTC, Paul Backus wrote:

>

On Wednesday, 3 August 2022 at 12:50:17 UTC, Ruby The Roobster wrote:

>

Any way to 'cast away' shared for an unknown type T?

There's actually an Unshared template for this in std.traits, but for some reason it's private, so you can't use it directly. Fortunately, it's only two lines:

alias Unshared(T) = T;
alias Unshared(T: shared U, U) = U;

Once you have this, you can write cast(Unshared!T).

Thank you. This really helped.