【问题标题】:If I delete the copy constructor, do I get no implicit move constructor?如果我删除复制构造函数,我是否没有隐式移动构造函数?
【发布时间】: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
}

但如果我不删除复制构造函数,或者我默认移动构造函数,
它会起作用的。那么,删除复制构造函数是否会抑制移动构造函数,
这背后的原因是什么

【问题讨论】:

标签: c++


【解决方案1】:

您应该看到有关特殊班级成员的表格。当您将复制构造函数设置为删除时,不会自动生成一个移动构造函数。

在表格中查看更多信息:

Source (slides).

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-17
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    相关资源
    最近更新 更多