Aliases to mutable thread-local data not allowed [testable source code]

mark mark at qtrac.eu
Wed Mar 11 12:43:28 UTC 2020


On Wednesday, 11 March 2020 at 12:22:21 UTC, Simen Kjærås wrote:
> On Wednesday, 11 March 2020 at 09:29:54 UTC, mark wrote:
[snip]
> Fascinating. It works just fine when compiling for 32-bit 
> targets with DMD on Windows, but not for 64-bit targets, nor 
> when compiling with LDC. Apparently, this difference is due to 
> DMD supporting 80-bit reals, and thus giving a different size 
> to Variant (VariantN!20 on DMD on Windows, VariantN!16 or 
> VariantN!32 elsewhere). There's a bug in VariantN that then 
> causes the compilation to fail 
> (https://issues.dlang.org/show_bug.cgi?id=20666).
>
> The issue at hand then, is that Deb is too big until that issue 
> if fixed. The simple solution to this is to allocate Deb on the 
> heap with new and pass pointers instead of instances directly. 
> Since you are already calling .dup whenever you pass a Deb 
> somewhere, you can simply modify .dup to return a Deb* and the 
> receive function to receive a Deb*, and I think you should be 
> good to go.

I did that and it compiles & runs, but no Debs get added to the 
collection.
See https://github.com/mark-summerfield/d-debtest-experiment -- 
the 'mto' version is the one with your fixes.


More information about the Digitalmars-d-learn mailing list