C++ 搬家进退两难

C++ 搬家进退两难,c++,c++11,move-semantics,C++,C++11,Move Semantics,为了禁用我的类的复制,我假设声明为私有,但不定义操作符=(const MyClass&)和MyClass(const MyClass&)-我还必须禁用这个类的move-ctor吗?是否隐式生成move构造函数(以及何时生成)还有待讨论 请参见StroustUp从2010-10-17开始的内容,副标题为是否默认生成移动操作? 顺便说一句,在C++0x中,您可以=删除函数,而不是使它们私有化和未定义 class non_copyable { public: non_copyable(

为了禁用我的类的复制,我假设声明为私有,但不定义
操作符=(const MyClass&)
MyClass(const MyClass&)
-我还必须禁用这个类的move-ctor吗?

是否隐式生成move构造函数(以及何时生成)还有待讨论

请参见StroustUp从2010-10-17开始的内容,副标题为是否默认生成移动操作?

顺便说一句,在C++0x中,您可以
=删除
函数,而不是使它们私有化和未定义

class non_copyable {
    public:
    non_copyable(const non_copyable&) = delete;
    non_copyable& operator=(const non_copyable&) = delete;
};
引述:

与默认的复制构造函数不同, 编译器不提供 默认移动构造函数


所以对于VS2010来说,没有必要隐瞒这一点。他们没有专门讨论默认移动分配运算符,但我想他们也不会生成一个。

谢谢您的回答。不幸的是,我在VS2010上工作,他们仍然没有实现删除构造。很高兴知道。@没关系,它们也没有实现移动构造函数的默认生成,所以您不必显式禁用它们。