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

Arg*_*art 7 c++ operator-overloading rvalue-reference c++11

是否有可能进行设计以及如何operator+为我的课程重载以使其成为C可能:

C&& c = c1 + c2;
Run Code Online (Sandbox Code Playgroud)

但这不可能:

c1 + c2 = something;
Run Code Online (Sandbox Code Playgroud)

编辑:我将对象更改为小写字母.c1,c2并且c是类的对象C.&&不是逻辑operator&&,而是右值参考.

例如写作:

double&& d = 1.0 + 2.0;
Run Code Online (Sandbox Code Playgroud)

是100%正确的(新)C++代码,而

1.0 + 2.0 = 4.0;
Run Code Online (Sandbox Code Playgroud)

显然是一个编译器错误.我想要完全一样,但对于我的班级,我想要双倍C.

第二次编辑: 如果我的操作符返回C或C&,我可以赋值给rvalue引用,但也可以赋值给c1 + c2,这是无意义的.给const这里禁用它,但它也禁用了对rvalue的赋值.至少在VC++ 2k10上.那么这有多重?

fre*_*low 10

赋值运算符只能在左值上调用:

class C
{
    // ...

public:

    C& operator=(const C&) & = default;
};
Run Code Online (Sandbox Code Playgroud)

请注意右括号后的单个&符号.它会阻止分配rvalues.