La opción g ++ -Wall incluye -Wreorder. Lo que hace esta opción se describe a continuación. No es obvio para mí por qué a alguien le importaría (especialmente lo suficiente para activar esto por defecto en -Wall).¿Cuál es el punto de 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.
Esto realmente debería ser el ejemplo en la documentación. –
gracias. Dado que la mayoría de nuestros tipos son tipos de POD con inicializadores simples, esto no se me ocurrió. Su ejemplo es mucho mejor que el ejemplo del manual de g ++. –
El ejemplo en esta es la respuesta es terriblemente confuso. Cuando probé esto, encontré que 'i' estaba ** inicializado consistentemente ** a' 0', lo que hace que parezca que nada es erróneo. Pero si usas algo como '100', entonces ves que' j' es '100' y' i' es '0'. Sé que probablemente se deba al compilador, pero estoy usando g ++ por defecto que obtengo con Ubuntu, por lo que debería ser una ocurrencia común. –