4.5条规则:没有移动分配运算符?

时间:2019-01-06 02:49:27

标签: c++ c++11 move-semantics

基于热门问题What is the copy-and-swap idiom?

  1. 为什么4.5的规则不包括移动分配运算符(有效地成为5.5的规则)?相反,我已经读过(例如在这里What is the Rule of Four (and a half)?)我们有4.5或5的规则?

  2. 由于swap成员函数是noexcept,拷贝分配运算符是否也应被标记为相同(移动构造函数不能调用,因为它调用了可以抛出的默认构造函数)?

dumb_array& operator=(dumb_array other) // should be noexcept?
{
    swap(*this, other);
    return *this;
}

1 个答案:

答案 0 :(得分:1)

因为它没有用。

点击第二个链接,然后在此处The Rule of The Big Four (and a half) – Move Semantics and Resource Management

请仔细阅读 5 –移动分配部分。

您将看到

  

消除移动分配运算符

     

实际上不需要移动分配运算符!

带有所有说明!

通常,通常在使用移动分配运算符时会使用运算符dumb_array& operator=(dumb_array other)

我尚未验证,但您也可以将其删除,因为无论如何它都不会生成。