Поделиться через


Предупреждение C26479

Не используйте std::move для возврата локальной переменной. (f.48)

Замечания

Оператор return — это последнее использование локальной переменной, поэтому компилятор использует семантику перемещения, чтобы возвращать ее каждый раз, когда это возможно. Добавление избыточности std::move в этом сценарии. Кроме того, избыточные std::moves могут препятствовать удалению копирования.

Имя анализа кода: 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() только в том случае, если необходимо явно переместить объект в другую область.