【发布时间】:2012-12-16 20:31:32
【问题描述】:
考虑以下程序:
#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 };
就标准而言,双花括号和单花括号之间应该没有区别,至少在这个例子中是这样。
警告有两种处理方式:
- 关掉就行了
- 修复代码,让编译器开心
你有什么建议?恕我直言,双卷曲的表情看起来有些难看。另一方面,警告可能会在更复杂的示例中检测到真正的问题。您知道警告可以帮助您的示例吗?
【问题讨论】:
-
因为 std::array 是一个聚合。请参阅此 [线程][1]。 [1]:stackoverflow.com/questions/16341118/…
-
只是通知:要禁用此警告,应在 clang 上添加 -Wno-missing-braces
标签: c++ c++11 compiler-warnings