https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82552
Bug ID: 82552 Summary: No warning when using uninitialized values in initializer list Product: gcc Version: 7.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: s-beyer at gmx dot net Target Milestone: --- Hi, the following code example is pretty harmless but the underlying issue took me quite some time to debug in real code (where the constructors are really doing stuff): ----8<---- struct bar { bar() {} bar(bar&) {} }; class foo { bar first; bar second; public: foo() : first(second) {} }; ---->8---- The interesting thing is the foo constructor. It initializes "first" with "second", but the initializer list is going in order of the attributes, so "first" is initialized before "second" is. I'd expect either an -Wreorder warning ("second" will be initialized after "first") or an -Wuninitialized ("second" will be used uninitialized) warning (which is what clang++ does). I tested this with g++ 4.9.3, 5.4.1, 6.4.0, and 7.2.0. None of it raised alarm :( Thanks.