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::move
elementy 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::move
element :
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