基于热门问题What is the copy-and-swap idiom?:
为什么4.5的规则不包括移动分配运算符(有效地成为5.5的规则)?相反,我已经读过(例如在这里What is the Rule of Four (and a half)?)我们有4.5或5的规则?
由于swap
成员函数是noexcept
,拷贝分配运算符是否也应被标记为相同(移动构造函数不能调用,因为它调用了可以抛出的默认构造函数)?
dumb_array& operator=(dumb_array other) // should be noexcept?
{
swap(*this, other);
return *this;
}
答案 0 :(得分:1)
因为它没有用。
点击第二个链接,然后在此处The Rule of The Big Four (and a half) – Move Semantics and Resource Management
请仔细阅读 5 –移动分配部分。
您将看到
消除移动分配运算符
实际上不需要移动分配运算符!
带有所有说明!
通常,通常在使用移动分配运算符时会使用运算符dumb_array& operator=(dumb_array other)
。
我尚未验证,但您也可以将其删除,因为无论如何它都不会生成。