Udostępnij za pośrednictwem


Ostrzeżenie C26479

Nie używaj zmiennej std::move, aby zwrócić zmienną lokalną. (f.48)

Uwagi

Instrukcja return jest ostatnim użyciem zmiennej lokalnej, więc kompilator używa semantyki przenoszenia, aby zwrócić ją zawsze, gdy jest to możliwe. Dodanie elementu std::move jest nadmiarowe w tym scenariuszu. Ponadto nadmiarowe std::moveelementy mogą zapobiegać elizji kopiowania.

Nazwa analizy kodu: NO_MOVE_RET_ON_LOCALS

Przykład 1

S foo()
{
    S local1{};
    return std::move(local1); // Warning: C26479
}

Aby rozwiązać ten problem, usuń nadmiarowy std::moveelement :

S foo()
{
    S local1{};
    return local1; // No warning
}

Zobacz też

F.48 — Nie zwracaj std::move(local)wersji ES.56 — zapis std::move() tylko wtedy, gdy trzeba jawnie przenieść obiekt do innego zakresu