c – 使用大括号的std :: array copy构造
作者:互联网
为什么以下代码没有编译:
#include <array>
struct A
{
std::array<size_t, 5> i_;
A() {}
A( A const& a)
: i_{ a.i_ } {}
};
int main()
{
A a1;
A a2 = a1;
return 0;
}
GCC 4.8.1说
错误:在初始化时无法将’const std :: array’转换为’long unsigned int’
:i_ {a.i_}
解决方法:
问题是std :: array是一个聚合,因此你不能使用大括号来调用copy-ctor.您需要指定元素.这也解释了您的错误消息,它正在尝试将a.i_转换为数组的元素,即size_t.由于您不能这样做,您必须使用i_(a.i_)来创建副本.
标签:list-initialization,c,c11,arrays 来源: https://codeday.me/bug/20190825/1719022.html