Avviso C26479
Non usare std::move per restituire una variabile locale. (f.48)
Osservazioni:
L'istruzione return
è l'ultimo uso di una variabile locale, quindi il compilatore usa la semantica di spostamento per restituirla quando possibile.
L'aggiunta di un oggetto std::move
è ridondante in questo scenario. Inoltre, gli s ridondanti std::move
possono impedire l'elisione della copia.
Nome dell'analisi del codice: NO_MOVE_RET_ON_LOCALS
Esempio 1
S foo()
{
S local1{};
return std::move(local1); // Warning: C26479
}
Per risolvere questo problema, rimuovere la ridondanza std::move
:
S foo()
{
S local1{};
return local1; // No warning
}
Vedi anche
F.48 - Non restituire std::move(local)
ES.56 - Scrivere std::move()
solo quando è necessario spostare in modo esplicito un oggetto in un altro ambito