Опция g ++ -Wall включает -Wreorder. Эта опция описана ниже. Для меня это не очевидно, почему кто-то позаботится (особенно, чтобы включить это по умолчанию в -Wall).Какой смысл g ++ -Wreorder?
-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.
Это действительно должно быть примером в документации. –
спасибо. Поскольку большинство наших типов были типами POD с простыми инициализаторами, это не происходило со мной. Ваш пример намного лучше, чем пример руководства g ++. –
Примером в этом ответе является ужасное смешение. Когда я протестировал это, я обнаружил, что 'i' был последовательно инициализирован ** до' 0', что делает его похожим на то, что ничего не ошибочно. Но если вы используете что-то вроде '100', вы видите, что' j' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' Я знаю, что это, вероятно, связано с компилятором, но я использую все настройки g ++, которые я получаю с Ubuntu, поэтому это должно быть обычным явлением. –