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