0

私はそのように「宣伝」できることを知っていweak_ptrますshared_ptr

// std::weak_ptr<T> weak;
std::shared_ptr<T> promoted(weak);

私の質問は次のとおりです。それを何とか防ぐことはできますか?

演習として、私は独自の非常に単純な WeakPtrFactory の実装を作成したいと考えましthisこれはクラス メンバーとして開始され、weak_ptrオブジェクトの破棄時に無効化される s を生成します。私の試みは単にshared_ptrプライベートメンバーとして使用されweak_ptr、それで作成された s が返されました(念のために op deleter は渡されません)。しかし、誰もがそれらを昇格させてshared_ptrメカニズム全体を壊すことができるため、明らかな欠点があります。

4

1 に答える 1