我正在读C++入门教程5,其中一个关于容器的章节谈到了一些关于赋值的内容,这里引用了它:
"...
c = {a,b,...}; 将c中的元素替换为初始值设定项列表中元素的副本。(对数组无效)...“
然后我在VS2016上尝试:
array<int, 2>ai;
ai = { 1,3 };
for (auto c : ai) {
cout << c << endl;
}令人惊讶的是,这可以工作,没有发生错误。
所以我只想知道,一个数组可以被分配一个初始值设定项列表,对吗?或者仅仅是因为编译器?
发布于 2016-10-17 22:50:26
是的,它被定义为可分配的:
类
array依赖于隐式声明的特殊成员函数(12.1、12.4和12.8)来符合23.2中的容器需求表。
你可以使用初始化器列表语法,因为array的构造函数不是explicit,否则你必须说类似下面这样的话:
ai = array<int,2>{ 1,3 };https://stackoverflow.com/questions/40089452
复制相似问题