如果我按如下方式初始化 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 版本中的一个错误,还是故意这样做的?如果是这样,为什么?
原文由 Byzantian 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是
std::array
的简单实现:它是一个聚合结构,其唯一数据成员是传统数组,因此内部
{}
用于初始化内部数组。在聚合初始化的某些情况下允许大括号省略(但通常不推荐),因此在这种情况下只能使用一个大括号。请参见此处: 数组的 C++ 向量