如果我按照以下方式初始化std::array,编译器会警告我缺少大括号
std::array<int, 4> a = {1, 2, 3, 4};
这个修复了问题:
std::array<int, 4> a = {{1, 2, 3, 4}};
这是警告信息:
missing braces around initializer for 'std::array<int, 4u>::value_type [4] {aka int [4]}' [-Wmissing-braces]
这只是我的gcc版本中的一个错误吗,还是故意的?如果是故意的,为什么?
std::array
是一个聚合体。但我认为将来可能会让它能够使用单个集合。 - chrisstruct S {int i; int j;};
和S s = {5, 6};
进行初始化吗?这就是聚合初始化。std::array
包含一个内建数组,可以通过初始化列表进行初始化,也就是内部集合所做的事情。外部集合用于聚合初始化。 - chris