其他分享
首页 > 其他分享> > c – 使用大括号的std :: array copy构造

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