【发布时间】:2012-02-10 09:48:55
【问题描述】:
std::array<T> 本质上是一个包裹在struct 中的 C 样式数组。 structs 的初始化需要大括号,数组的初始化也需要大括号。所以我需要两对大括号:
std::array<int, 5> a = {{1, 2, 3, 4, 5}};
但是我看到的大多数示例代码只使用了一对大括号:
std::array<int, 5> b = {1, 2, 3, 4, 5};
为什么允许这样做,与第一种方法相比,它有什么好处或缺点?
【问题讨论】:
-
我不确定它是否被标准所允许——可能接受该代码的编译器是基于早期的 C++11 草案,或者只是给出一个警告,因为它是允许格式错误代码的扩展。
-
@ildjarn 根据 Johannes 的说法,这是允许的。
标签: c++ arrays initialization c++11 curly-braces