Предупреждение C26479
Не используйте std::move для возврата локальной переменной. (f.48)
Замечания
Оператор return
— это последнее использование локальной переменной, поэтому компилятор использует семантику перемещения, чтобы возвращать ее каждый раз, когда это возможно.
Добавление избыточности std::move
в этом сценарии. Кроме того, избыточные std::move
s могут препятствовать удалению копирования.
Имя анализа кода: NO_MOVE_RET_ON_LOCALS
Пример 1
S foo()
{
S local1{};
return std::move(local1); // Warning: C26479
}
Чтобы устранить эту проблему, удалите избыточное std::move
:
S foo()
{
S local1{};
return local1; // No warning
}
См. также
F.48 — не возвращайте std::move(local)
ES.56— запись std::move()
только в том случае, если необходимо явно переместить объект в другую область.