运算符重载,允许使用rvalue捕获但不分配给

|| 是否可以设计,以及如何使班级ѭ1overload重载
operator+
,才能做到这一点:
C&& c = c1 + c2;
但这是不可能的:
c1 + c2 = something;
编辑: 我将对象更改为小写字母。
c1
c2
c
C
类的对象。
&&
不是逻辑
operator&&
,而是右值引用。 例如写:
double&& d = 1.0 + 2.0;
是100%正确的(新)C ++代码,而
1.0 + 2.0 = 4.0;
显然是编译器错误。我的班级ѭ1double希望完全一样,但要加倍。 第二编辑: 如果我的运算符返回C或C&,则可以分配给右值引用,也可以分配给c1 + c2,这是毫无意义的。在此处提供const会禁用它,但是也会禁用对rvalue的赋值。至少在VC ++ 2k10上。那么,这有多倍呢?     
已邀请:
使赋值运算符仅可在左值上调用:
class C
{
    // ...

public:

    C& operator=(const C&) & = default;
};
注意右括号后的单个“&”号。它防止分配给右值。     

要回复问题请先登录注册