https://gcc.gnu.org/bugzilla/show_bug.cgi?id=2972
--- Comment #20 from Manuel López-Ibáñez <manu at gcc dot gnu.org> --- (In reply to Jonathan Wakely from comment #14) > Created attachment 20817 [details] > better -Wmeminit patch > > This version ignores empty classes and checks for a nontrivial default ctor > instead of layout_pod_type. > > This patch doesn't enable the warning unless explicity requested. I realise > that this warning is about enforcing style ("members should be initialised > in the mem-initializer-list not in the ctor body") but that's ok because > it's my preferred style, I just don't want the compiler to enforce other > people's preferred style ;) Perhaps a better alternative is to warn only if the uninitialized member is used in a mem-initializer. Then, when building the constructor call, mark the uninitialized members somehow as uninitialized for the middle-end, and let the middle-end handle the cases in the body of the constructor. The first part would already fix PR19808. The second part will fix this bug with fewer false positives than the proposed patch.