[Issue 23140] New: Array!T where T is a shared class no longer works
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Wed May 25 14:16:36 UTC 2022
    
    
  
https://issues.dlang.org/show_bug.cgi?id=23140
          Issue ID: 23140
           Summary: Array!T where T is a shared class no longer works
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: regression
          Priority: P1
         Component: phobos
          Assignee: nobody at puremagic.com
          Reporter: schveiguy at gmail.com
I'm not sure it should have ever worked, but I'm also wondering why this cannot
be made to work.
Prior to 2.099.0, the following code compiled:
```d
import std.container : Array;
shared class C {}
Array!C arr;
```
But it no longer does. The reason is because of the fix for
https://issues.dlang.org/show_bug.cgi?id=22515. Now, a C is actually typed as
`shared(C)`, and it does not implicitly cast to `const void *` (used by GC
functions and pureFree, etc.).
Three options here:
1. Fix Array to cast away the shared when using these functions (a reasonable
assumption)
2. Fix the druntime functions so they also accept `shared` pointers
3. close this bug as wontfix, and I'll have to work around it in the project
I'm trying to compile (libasync)
--
    
    
More information about the Digitalmars-d-bugs
mailing list