[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