Разве здесь не нужен модификатор const? [Дубликат]
На этот вопрос уже есть ответ здесь:
Как возвращаемый объект может быть назначен? 1 ответ"Эффективный С ++ » Пункт 3 говорит "Используйте const, когда это возможно "и это дает пример как:
const Rational operator*(const Rational& lhs,
const Rational& rhs);
чтобы клиенты не могли совершать такие злодеяния:
Rational a, b, c;
...
(a * b) = c; // invoke operator= on the result of a*b!
Но развеt нереферентное возвращаемое значение функций ужеRvalue? Так зачем же это делать?