可以为数组分配初始化列表吗?

时间:2016-10-17 14:46:27

标签: c++ arrays

我正在阅读C ++ Primer 5th,有关容器的章节说了一些关于赋值的内容,引用了这里:

“......

c = {a,b,...}; 

将c中的元素替换为初始化列表中元素的副本。(对数组无效)......“

然后我尝试了VS2016:

array<int, 2>ai;
ai = { 1,3 };
for (auto c : ai) {
    cout << c << endl;
}

令人惊讶的是,这可能有效,没有发生错误。

所以我只想知道,是否可以为阵列分配初始化列表?或者仅仅是因为编译器?

1 个答案:

答案 0 :(得分:3)

是的,它被定义为可转让:

  

array依赖于隐式声明的特殊成员函数   (12.1,12.4和12.8)符合容器要求表   在23.2。

您可以使用初始化列表语法,因为array的构造函数不是explicit。否则你必须说出以下内容:

ai = array<int,2>{ 1,3 };