该声明
隐式声明的移动赋值运算符
如果没有为类类型(结构、类或联合)提供用户定义的移动赋值运算符,并且以下所有情况都为真:
没有用户声明的复制构造函数;
没有用户声明的移动构造函数;
没有用户声明的复制赋值运算符;
没有用户声明的析构函数;
使用用户声明的复制分配运算符是否仅表示
类名 & 类名 :: 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;
};
这是否符合隐式声明的移动赋值运算符的条件?
隐式声明的移动构造函数也是如此。