给出以下代码:
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的初始化是通过复制构造函数完成的。