以下不会编译(尝试过clang& gcc)
#include <vector>
struct Foo
{
Foo(int a=0) : m_a(a) {}
Foo(const Foo& f) = delete;
// Foo(Foo&& f) = default;
private:
int m_a;
};
int main()
{
std::vector<Foo> foovec;
foovec.emplace_back(44); // might resize, so might move
}
但是如果我不删除复制构造函数,或者我默认移动构造函数,则
它会工作。那么,删除复制构造函数是否会抑制移动构造函数,
背后的理性是什么??