Functions
F.48
Не пишите `return std::move(local)`
Причина
Возврат локальной переменной неявно её перемещает. Явный std::move всегда является ухудшением производительности, поскольку предотвращает Оптимизацию Возвращаемого Значения (RVO), которая может полностью устранить перемещение.
Пример (плохой)
S bad()
{
S result;
return std::move(result);
}
Пример (хороший)
S good()
{
S result;
// Named RVO: в лучшем случае — устранение перемещения, в худшем — конструктор перемещения
return result;
}
Контроль
Это должно применяться инструментами путём проверки выражения return.