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