В опции 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.