次のコードを検討してください。
struct Bar
{
std::shared_ptr<int> MemberFunction()
{
return std::move(m_memberVariable);
}
std::shared_ptr<int> m_memberVariable;
};
std::move
from ashared_ptr<T>
がメンバー変数の参照を実際に削除することは保証されていますか? または、これを保証するためにコピーをコピーしてクリアし、コピーを返す必要があります*
明らかに、unique_ptr<T>
それが正しいことをする場合(おそらくそうしないことはできません)、標準は a d fromがその参照を解放することを保証しますか? [メンバー変数、静的またはグローバルの場合、ローカルはスコープ外になるため問題ありません]std::move
shared_ptr
*おそらく、「コピーしてクリアして返す」よりも「スワップして返す」の方が適切です。