Можно ли спроектировать и как сделать перегруженным operator+
для моего класса C
, чтобы это было возможно:
C&& c = c1 + c2;
но это невозможно:
c1 + c2 = something;
Edit:
Я изменил объекты на маленькие буквы. c1
, c2
и c
являются объектами класса C
. &&
- это не логический operator&&
, а скорее ссылка на значение.
Например, писать:
double&& d = 1.0 + 2.0;
- это 100% правильный (новый) код C ++, тогда как
1.0 + 2.0 = 4.0;
, очевидно, ошибка компилятора. Я хочу точно то же самое, но вместо двойного, для моего класса C
.
Второе редактирование:
Если мой оператор возвращает C или C &, у меня может быть присваивание rvalue-ссылки, но также присваивание c1 + c2, что бессмысленно. Задание const здесь отключает его, но также отключает присваивание rvalue. По крайней мере на VC ++ 2k10. Так как же это сделать в два раза?