分享方式:


警告 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()