14

次のコードを検討してください。

struct Bar
{
    std::shared_ptr<int> MemberFunction()
    {
        return std::move(m_memberVariable);
    }

    std::shared_ptr<int> m_memberVariable;
};

std::movefrom ashared_ptr<T>がメンバー変数の参照を実際に削除することは保証されていますか? または、これを保証するためにコピーをコピーしてクリアし、コピーを返す必要があります*

明らかに、unique_ptr<T>それが正しいことをする場合(おそらくそうしないことはできません)、標準は a d fromがその参照を解放することを保証しますか? [メンバー変数静的またはグローバルの場合、ローカルはスコープ外になるため問題ありません]std::moveshared_ptr

*おそらく、「コピーしてクリアして返す」よりも「スワップして返す」の方が適切です。

4

1 に答える 1