www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How to cast away shared?

reply Ruby The Roobster <rubytheroobster yandex.com> writes:
Any way to 'cast away' shared for an unknown type T?
Aug 03 2022
parent reply Paul Backus <snarwin gmail.com> writes:
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: ```d alias Unshared(T) = T; alias Unshared(T: shared U, U) = U; ``` Once you have this, you can write `cast(Unshared!T)`.
Aug 03 2022
parent Ruby The Roobster <rubytheroobster yandex.com> writes:
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: ```d 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.
Aug 03 2022