Рассмотрим следующую программу:
#include <array>
int main()
{
std::array<int, 1> x = { 0 }; // warning!
x = { { 0 } }; // no warning
return 0;
}
Первая инициализация приводит к предупреждениям о gcc 4.7.2...
main.cpp:5:22: warning: unused variable ‘x’ [-Wunused-variable]
... и clang 3.1
main.cpp:5:28: warning: suggest braces around initialization of subobject [-Wmissing-braces]
std::array<int, 1> x = { 0 };
Что касается стандарта, не должно быть разницы между двойными или одиночными фигурными фигурными скобками, по крайней мере, в этом примере.
Есть два способа справиться с предупреждением:
- Просто отключите его
- Исправьте код, поэтому компилятор счастлив
Что вы предлагаете? ИМХО, двойное курчавое выражение выглядит несколько уродливо. С другой стороны, предупреждение может обнаруживать реальные проблемы в более сложных примерах. Вы знаете пример, где предупреждение помогло бы вам?