复制但不移动

时间:2011-01-01 23:48:58

标签: c++11

在C ++ 0x中,是否合法/预期可以复制某些类但不移动?我正在考虑实现一个调整大小的异类,如果某些类需要复制而某些类需要移动,我不确定我能处理它。

2 个答案:

答案 0 :(得分:5)

是的,一个类可以复制但不可移动是合法的:

class MyClass {
public:
    /* Copyable... */
    MyClass(const MyClass&);
    MyClass& operator= (const MyClass&);

    /* ... but not movable. */
    MyClass(MyClass&&) = delete;
    MyClass& operator= (MyClass&&) = delete;
};

但是,我想不出有什么人愿意这样做的充分理由。知道C ++程序员(比如我!),我认为你应该预料到这可能会出现。

出于好奇,如果一个类是可复制但不可移动的话,你依赖的代码会破坏?

答案 1 :(得分:0)

我很确定使移动构造函数受保护/私有是一种限制移动该类对象的能力的方法。如果你能在模板中看到它?我不这么认为。这种检查你需要std::enable_if

相关问题