【发布时间】:2014-11-07 14:09:35
【问题描述】:
以下内容无法编译(尝试过 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
}
但如果我不删除复制构造函数,或者我默认移动构造函数,
它会起作用的。那么,删除复制构造函数是否会抑制移动构造函数,
这背后的原因是什么?
【问题讨论】:
-
@KarolyHorvath 为什么在就地构造
Foo时需要复制或移动构造函数? -
@0x499602D2:矢量调整大小时需要它,
emplace_back时可能空间不足
标签: c++