vc++の実装見てたら
shared_ptr<Ty>とweak_ptr<Ty>がTy*を持ちつつRef_count経由でもTy*を参照してる。
Ty*deleteはRef_countがやってるのはいいとして、値の取得は自分のTy*をみてる。
こうする理由ってあるのかな?自前のTy*いらないような気がするんだが。