私はそのように「宣伝」できることを知ってい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メカニズム全体を壊すことができるため、明らかな欠点があります。