On Thursday, 2 July 2020 at 15:20:23 UTC, Ali Çehreli wrote:
According to its date, it was written when I was working for
Weka. Apparently, ldc took care of it for them after all.
If so, then without them posting any issue beforehand or giving
any feedback afterwards.
> For recent LDC versions, the 'solution' is to (statically)
initialize
> the array with zeros, as fully zero-initialized structs don't
feature
> any explicit .init symbols anymore.
What about floating point and char types? Their .init values
are not all zeros in D spec. (I don't think this matters in my
case but still.)
That's why all you have to do, in order not to have recent LDC
emit the struct's init symbol, is to initialize these members
manually with zeros:
struct S { double[elementCount] a = 0; }
void foo() { S s; } // compiler does a memset
`= void` for members doesn't work and, I dare say, not work
anytime soon if ever.