C++23: неявный move в return, std::move больше не нужен
Move in C++ without a std:move

Андреас Фертиг, автор блога о C++, объясняет, как C++23 делает неявный move при возврате rvalue-ссылок из функций, что позволяет избежать ручного вызова std::move. Он приводит примеры, где до C++20 требовался явный move или происходила копия, а теперь компилятор сам выполняет move. Это дополняет его прежний совет использовать std::move редко, обеспечивая лучшую производительность по умолчанию.
Теперь вы можете следовать моему правилу использовать std::move редко еще чаще!
- fluoridation
К сожалению, я не думаю, что можно избежать понимания семантики значений, чтобы получить правильное и/или производительное поведение.
- sprocketz
Что делает NVRO настолько более сложным для реализации? Почему они не могли сделать его обязательным, как RVO? Компиляторы буквально просто обрабатывают отдельный случай простого return-выражения с прямой конструкцией или что-то в этом роде?
- tom_
Если автор читает: оба сложных примера одинаковы.