#include #include using namespace std; struct B { B(int i) : m(i) {} int m; }; struct A { shared_ptr b; }; int main(void) { shared_ptr x(new B(42)); A* a = new A; A* c = new A; a->b = x; c->b = x; cout << x.use_count() << endl; delete a; cout << x.use_count() << endl; delete c; cout << x.use_count() << endl; return 0; }