Warnung C26479
Verwenden Sie "std::move" nicht, um eine lokale Variable zurückzugeben. (f.48)
Hinweise
Die return
Anweisung ist die letzte Verwendung einer lokalen Variablen, sodass der Compiler Verschiebungssemantik verwendet, um sie nach Möglichkeit zurückzugeben.
Das Hinzufügen eines std::move
Ist-Werts ist in diesem Szenario redundant. Darüber hinaus können redundante std::move
s das Kopieren von Elision verhindern.
Codeanalysename: NO_MOVE_RET_ON_LOCALS
Beispiel 1
S foo()
{
S local1{};
return std::move(local1); // Warning: C26479
}
Um dieses Problem zu beheben, entfernen Sie die redundante std::move
:
S foo()
{
S local1{};
return local1; // No warning
}
Siehe auch
F.48 - Es.56 nicht zurückgeben std::move(local)
– Nur schreiben std::move()
, wenn Sie ein Objekt explizit in einen anderen Bereich verschieben müssen