В опции g++ -Wall есть -Wreorder. Эта опция описана ниже. Для меня это не очевидно, почему кому-то это нужно (особенно, чтобы включить это по умолчанию в -Wall).
-Wreorder (C++ only) Warn when the order of member initializers given in the code does not match the order in which they must be executed. For instance: struct A { int i; int j; A(): j (0), i (1) { } }; The compiler will rearrange the member initializers for i and j to match the declaration order of the members, emit-ting a warning to that effect. This warning is enabled by -Wall.