http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49754
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-07-15 09:56:49 UTC --- (In reply to comment #2) > Since (x) is uninitialized, so is (x.i). But what if x.i gets initialized, is x still uninitialized? struct X { int i; }; struct Y { int i; int j; }; int main() { X x; x.i = 0; // is 'x' initialized now? Y y; y.i = 0; // is 'y' initialized now? y.j = 0; // is 'y' initialized now? } It would be possible to track the initialization of each subobject *and* the aggregate, but it would be more overhead