【发布时间】:2013-09-13 18:17:40
【问题描述】:
我现在正在阅读 C++14 的标准草案,也许我的法律术语有点生疏,但我找不到任何关于允许像下面这样的初始化的内容
std::array<int, 3> arr{1,2,3};
合法。 (编辑:显然以上是 C++11 中的合法语法。)目前在 C++11 中,我们必须将 std::array 初始化为
std::array<int, 3> arr{{1,2,3}}; // uniform initialization + aggregate initialization
或
std::array<int, 3> arr = {1,2,3};
我以为我在某处听说他们正在放宽 C++14 中的规则,以便我们在使用统一初始化时不必使用双括号方法,但我找不到实际证据。
注意:我关心这个的原因是因为我目前正在开发一个 multi_array - 类型并且不想像这样初始化它
multi_array<int, 2, 2> matrix = {
{{ 1, 2 }}, {{ 3, 4 }}
};
【问题讨论】:
-
注意:此讨论仅适用于标量类型的数组;对于聚合数组see here