need help to work around float union non-zero init
Nick Treleaven
nick at geany.org
Fri Sep 20 16:21:10 UTC 2024
On Friday, 20 September 2024 at 09:38:54 UTC, Dakota wrote:
> I need my struct defined as `isZeroInit`, so can I can import
> them as `di` file. (this also reduce build size)
>
>
> But I find this problem with float inside union:
>
>
> ```d
> struct test_t {
> union {
> int i32;
> float f32;
> }
> }
>
> static assert(__traits(isZeroInit, test_t) );
> ```
>
> ```sh
> Error: static assert: `__traits(isZeroInit, test_t)` is false
> ```
>
> I consider this is compiler bug
Fix: https://github.com/dlang/dmd/pull/16858
> (it may take years to get fixed), so I am here to ask any way
> to workaround this problem?
Write `= void` for each field with non-zero init:
```
union {
int i32;
float f32 = void;
}
```
Thanks to Dennis for the workaround.
More information about the Digitalmars-d-learn
mailing list