根据GCC 4.6.3(Ubuntu/Linaro 4.6.3-1ubuntu5),我在以下代码中的数组初始化中缺少大括号:
#include#include #include int main(){ int plain[] = {1,2,3,4,5}; std::array std_arr = {1,2,3,4,5}; // warning, see below boost::array boost_arr = {1,2,3,4,5}; // warning, see below std::cout << plain[0] << std_arr[1] << boost_arr[2] << std::endl; }
> g++ test.cc -Wall -Wextra -pedantic --std=c++0x test.cc: in function »int main()«: test.cc:7:47: warning: curly braces missing around initialization for »std::array::value_type [5] {aka int [5]}« [-Wmissing-braces] test.cc:8:47: warning: curly braces missing around initialization for »int [5]« [-Wmissing-braces]
显然(GCC缺少初始化程序的大括号)这是GCC中的一个错误,即使在稍微不同的上下文中也是如此.答案不同于"提交错误报告"到"只是禁用警告".
但是,在std::array
或者boost::array
,这个警告是多余的,还是我错过了重要的事情?
(我可能会添加额外的括号,而不是禁用警告,但我很好奇其含义)