同じアドレスに関連して、複数の shared_ptr カウンターがありますが、C++ 標準で禁止されていますか? 同じオブジェクトを指しているが、基になる参照カウント構造を共有していない複数の shared_ptr オブジェクトに関するその他の無数の質問。
上記の質問でオブジェクトが「enable_shared_from_this」を継承するとどうなりますか? 私の shared_from_this() は何を返しますか? カスタムの削除機能があるものか、ないものか?
struct B : boost::enable_shared_from_this<B> {
boost::weak_ptr < B > get_weak() {
return shared_from_this();
}
};
void doNothing(B *) {
}
int main() {
B * b0 = new B;
boost::shared_ptr < B > sddb0(b0, doNothing);
boost::weak_ptr < B > swddb0(sddb0->get_weak());
// Does this have a custom deleter???
boost::shared_ptr < B > sddb1 = swddb0.lock();
boost::shared_ptr < B > scdb0(b0);
boost::weak_ptr < B > swcdb0(sddb0->get_weak());
// Does this *not* have a custom deleter???
boost::shared_ptr < B > scdb1 = swcdb0.lock();
}