Перегрузка оператора, которая разрешает захват с помощью rvalue, но не присваивает

Можно ли спроектировать и как мне сделать перегруженный оператор + для моего класса C , чтобы это было возможно:

C&& c = c1 + c2;

, но это невозможно:

c1 + c2 = something;

Редактировать: Я поменял предметы на маленькие буквы. c1 , c2 и c являются объектами класса C . && - это не логический оператор && , а скорее ссылка на rvalue.

Например, запись:

double&& d = 1.0 + 2.0;

- это 100% правильный (новый) код C ++, а

1.0 + 2.0 = 4.0;

- очевидно ошибка компилятора. Я хочу точно то же самое, но вместо двойного, для моего класса C .

Второе редактирование: Если мой оператор возвращает C или C &, я могу иметь присвоение ссылке rvalue, но также присвоение c1 + c2, что бессмысленно. Указание здесь const отключает его, но также отключает присваивание rvalue. По крайней мере, на VC ++ 2k10. Так как же double это получается?

7
задан Xeo 31 January 2012 в 23:08
поделиться