On 4/9/18 7:06 AM, Shachar Shemesh wrote:
struct S {
   int a;
   int[5000] arr = void;
}

void func() {
   S s;
}

During the s initialization, the entire "S" area is initialized, including the member arr which we asked to be = void.

Is this a bug?

Not technically. It has to initialize `a` to 0. The only way we initialize structs is to copy the whole initializer with memcpy.

It would be possible to leave the "tail" uninitialized, and just store the initializer for the first members that have non-void initializers. But that's not how it works now.

If that were to happen, you'd still have the same issue with things like:

struct S {
   int[5000] arr = void;
   int a;
}

But maybe that's just something we would have to live with.

-Steve

Reply via email to