警告 C26479
請勿使用 std::move 傳回區域變數。 (f.48)
備註
語句 return
是區域變數的最後一次使用,因此編譯器會盡可能使用移動語意來傳回它。
std::move
在此案例中新增 是多餘的。 此外,備援 std::move
s 可以防止複製 elision。
程式碼分析名稱: NO_MOVE_RET_ON_LOCALS
範例 1
S foo()
{
S local1{};
return std::move(local1); // Warning: C26479
}
若要修正此問題,請移除備援 std::move
:
S foo()
{
S local1{};
return local1; // No warning
}
另請參閱
F.48 - 不要傳回 std::move(local)
ES.56 - 只有當您需要明確地將物件移至另一個範圍時,才寫入 std::move()