https://gcc.gnu.org/bugzilla/show_bug.cgi?id=19808
--- Comment #37 from Jonathan Wakely <redi at gcc dot gnu.org> --- N.B. we should also warn using uninitialized members in default member initializers, e.g. both of these should produce a warning: struct X { int x1 = x2; int x2 = 0; }; X x{}; // causes definition of default constructor struct Y { int y1 = y2; int y2; Y() : y2(0) { } }; Clang warns about both: defmeminit.cc:2:12: warning: field 'x2' is uninitialized when used here [-Wuninitialized] int x1 = x2; ^ defmeminit.cc:6:3: note: in implicit default constructor for 'X' first required here X x{}; ^ defmeminit.cc:1:8: note: during field initialization in the implicit default constructor struct X { ^ defmeminit.cc:9:12: warning: field 'y2' is uninitialized when used here [-Wuninitialized] int y1 = y2; ^ defmeminit.cc:11:3: note: during field initialization in this constructor Y() : y2(0) { } ^ 2 warnings generated.