std :: initializer_list应该触发副本吗?

时间:2019-12-09 12:32:39

标签: c++ vector c++17 initializer-list

给出以下代码:

struct X
{
    explicit X() {}
    X( const X & ) = delete;
    X & operator=( const X & ) = delete;
    X( X && ) = default;
    X & operator=( X && ) = default;
};

int
main()
{
    std::vector<X> t;
    t = { X{} };
    return 0;
}

应该失败吗?到目前为止,我一直认为std :: vector将通过初始化列表进行移动初始化,但是至少在C ++ 17中使用g ++ 7.4时,vector的初始化是通过复制构造函数完成的。

0 个答案:

没有答案