Czy mądrze jest ignorować ostrzeżenie „-Wmissing-braces” gcc / clang?
Rozważmy następujący program:
#include <array>
int main()
{
std::array<int, 1> x = { 0 }; // warning!
x = { { 0 } }; // no warning
return 0;
}
Pierwsza inicjalizacja prowadzi do ostrzeżeń na gcc 4.7.2 ...
main.cpp:5:22: warning: unused variable ‘x’ [-Wunused-variable]
... i brzęk 3.1
main.cpp:5:28: warning: suggest braces around initialization of subobject [-Wmissing-braces]
std::array<int, 1> x = { 0 };
Jeśli chodzi o standard, nie powinno być różnicy między podwójnymi lub pojedynczymi nawiasami klamrowymi, przynajmniej w tym przykładzie.
Istnieją dwa sposoby radzenia sobie z ostrzeżeniem:
Wyłącz toNapraw kod, aby kompilator był szczęśliwyCo proponujesz? IMHO, podwójne kręcone wyrażenie wygląda nieco brzydko. Z drugiej strony ostrzeżenie może wykryć rzeczywiste problemy w bardziej skomplikowanych przykładach. Czy znasz przykład, w którym ostrzeżenie by ci pomogło?