Condividi tramite


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::movepossono 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