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