Est-il sage d'ignorer gcc/clang s “-Wmissing-accolades” avertissement?

Considérons le programme suivant:

#include <array>

int main()
{
  std::array<int, 1> x = { 0 }; //warning!
  x = { { 0 } }; //no warning
  return 0;
}

De la première initialisation conduit à des mises en garde sur gcc 4.7.2...

main.cpp:5:22: warning: unused variable x [-Wunused-variable]

... et clang 3.1

main.cpp:5:28: warning: suggest braces around initialization of subobject [-Wmissing-braces]
  std::array<int, 1> x = { 0 };

Aussi loin que le standard va, il devrait y avoir aucune différence entre simple ou double accolades, au moins dans cet exemple.

Il y a deux façons de traiter avec l'avertissement:

  1. Simplement désactiver
  2. Corriger le code, de sorte que le compilateur est heureux

Que vous proposez-vous? À mon humble avis, la double bouclés expression semble un peu laid. D'autre part, l'avertissement peut détecter des problèmes réels dans des exemples plus compliqués. Connaissez-vous un exemple où l'avertissement qui vous aurait aidé?

Parce que std::array est un agrégat. Voir [thread][1]. [1]: stackoverflow.com/questions/16341118/...
Juste pour informer: pour désactiver cet avertissement, il faut ajouter -Wno-missing-accolades sur clang

OriginalL'auteur Philipp Claßen | 2012-12-16