【发布时间】:2018-10-13 10:58:36
【问题描述】:
声明
隐式声明的移动赋值运算符
如果没有为类提供用户定义的移动赋值运算符 类型(结构、类或联合),并且以下所有条件都为真:
没有用户声明的复制构造函数;
没有用户声明的移动构造函数;
没有用户声明的复制赋值运算符;
没有用户声明的析构函数;
带有用户声明的复制赋值运算符是否意味着只有
类名 & 类名 :: operator= ( 类名 && )
或任何 operator=()已定义?
例子:
class Bar
{
public:
Bar() = default;
SomeClass some;
};
class Foo
{
public:
Foo() = default;
Foo& operator=(Bar&& bar) : some(std::move(bar.some))
{
}
SomeClass some;
};
这是否符合隐式声明的移动赋值运算符的条件?
隐式声明的移动构造函数也是如此。
【问题讨论】:
标签: c++11 move-semantics move-assignment-operator