我有一个带有结构的向量
Struct S {
S( double a, double b ) : a_(a), b_(b) {}
double a_;
double b_;
S(S&&) = default; //ADDED
}我使用emplace将s的实例添加到向量中。
v.emplace_back( x, y );由于要保证编译器会添加移动构造函数,所以我认为添加默认的移动构造函数没有坏处,所以我添加了注释为似乎的行。但是,当我得到编译错误时,这似乎已经禁用了operator=。
/opt/rh/devtoolset-3/root/usr/include/c++/4.9.2/bits/stl_algo.h:868: error: use of deleted function ‘S& S::operator=(const S&)’
*__result = _GLIBCXX_MOVE(*__first);
^我不明白为什么会这样。我对S(S&)的实现是错误的吗?
编辑:使用擦除时会引发错误。
v.erase(std::remove_if(v.begin(), v.end(), deleteIf), v.end());发布于 2017-08-08 04:54:39
https://stackoverflow.com/questions/45559426
复制相似问题