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.

Reply via email to