Некоторое время назад мне сказали, что для обычного шаблона для реализации двухзначных операторов требуется последний ход
в return.
Matrix operator+(const Matrix &a, Matrix &&b) {
b += a;
return std::move(b);
}
Но теперь есть особое правило, что в a return
компилятор может рассматривать возвращаемое значение как временное, и тогда в этом не будет необходимости - достаточно простого return b
.
Но опять же, ] b
имеет в этой функции имя , следовательно, его LValue - что мешает компилятору m считать, что это временная функция, и ход
.
Это все еще так в самой последней версии стандарта C ++ 0x? Нам нужен ход
для реализации вышеуказанного шаблона?