0

在具有一系列 ctor 的类中(其中大多数只有一个参数),我希望所有单参数 ctor 也被相应的赋值运算符镜像。ctor包括但不限于copy-ctor和move-ctor。所以这个,应该满足五律。

  template <typename T>
  object& operator=(T&& from) {
    // ...
    return *this;
  }

这是一个最小的示例:https : //ideone.com/OKprcr(感谢@Daniel H 指出了常量)。

我得到的错误是

error: object of type 'object' cannot be assigned because its copy assignment operator is implicitly deleted
...
note: copy assignment operator is implicitly deleted because 'object' has a user-declared move constructor

为什么函数模板不实现复制赋值运算符?

4

1 回答 1

2

为什么函数模板不实现复制赋值运算符?

因为标准是这样说的([class.copy.assign]/1):

用户声明的复制赋值运算符X::operator=是类的非静态非模板成员函数,只有X一个类型为XX&、或的参数。const X&volatile X&const volatile X&

注意里面也没有X&&

于 2017-11-13T21:54:36.583 回答