Si consideri il seguente programma:È prudente ignorare l'avviso "-Smissing-braces" di gcc/clang?
#include <array>
int main()
{
std::array<int, 1> x = { 0 }; // warning!
x = { { 0 } }; // no warning
return 0;
}
La prima inizializzazione porta ad avvertenze sui gcc 4.7.2 ...
main.cpp:5:22: warning: unused variable ‘x’ [-Wunused-variable]
... e clang 3,1
main.cpp:5:28: warning: suggest braces around initialization of subobject [-Wmissing-braces]
std::array<int, 1> x = { 0 };
Per quanto come va lo standard, non ci dovrebbe essere alcuna differenza tra parentesi graffe doppie o singole, almeno in questo esempio.
Ci sono due modi per affrontare con l'avvertimento:
- Basta spegnerlo
- correggere il codice, in modo che il compilatore è felice
Cosa proponi? IMHO, la doppia espressione riccia sembra un po 'brutta. D'altra parte, l'avviso potrebbe rilevare problemi reali in esempi più complicati. Conoscete un esempio in cui l'avvertimento vi avrebbe aiutato?
Perché std :: array è un aggregato. Vedere questo [thread] [1]. [1]: http://stackoverflow.com/questions/16341118/whats-the-correct-way-to-initialize-a-member-array-with-an-initializer-list –
Solo per informa: per disabilitare questo avviso, si dovrebbe aggiungere -Chiuscole mancanti su clang –