Оператор присваивания в c ++ возвращает rvalue или lvalue? И если это lvalue, какой из двух аргументов будет увеличен здесь?
(a = b)++
Возвращает именующий. Согласно § 5.17:
Оператор присваивания (=) и все составные операторы присваивания
группа справа налево. Все требуют изменяемого lvalue как их слева
операнд и возвращает значение l, ссылаясь на левый операнд.
Если эти объекты имеют пользовательский оператор для присваивания, то это зависит от реализации и объявления (типа возврата) operator=
,
Так нормально, после
(a = b)++
Предмет a
будет увеличен.
Других решений пока нет …