я узнал: Определенного пользователем оператор инкремента постфикса должен возвращать константный объект ведет себя как фундаментальный арифметический тип:Как реализовать Postfix приращение оператора
int i = 0;
i++ = 42; // error, i++ is pr-value
++i = 42; // ok, ++i is l-value
так и для класса Widget он должен быть объявлен как
const Widget operator++(int);
...
Widget w1, w2;
w1++ = w2; // error, fine, same as i++ = 42
без const, он будет скомпилирован. Но с этим на месте, это не представляется возможным, вызвать
void f(Widget&&);
f(w1++); // error, invalid initialization of Widget&& from expression const Widget
что Питти, причиной w1 ++ является выражение г-значение, и это константность не имеет никакого влияния, потому что это временно, не так ли?
Теперь, как должен быть объявлен оператор ++ (int)? Спасибо за советы.
Вот как должны быть объявлены эти операторы http://en.cppreference.com/w/cpp/language/operator_incdec – DeiDei