please can anyone explain the reason for the following behavior #include <iostream> #include <boost/enable_shared_from_this.hpp> using namespace std; class A; typedef boost::shared_ptr<A> A_sptr_t; class B; typedef boost::shared_ptr<B> B_sptr_t; class A : public boost::enable_shared_from_this<A> { public: A() {} virtual ~A() {} }; class B : public A, public boost::enable_shared_from_this<B> { public: B() {} virtual ~B() {} void f(void) { cout << "this is working " << boost::enable_shared_from_this<B>::shared_from_this() << endl; } }; int main() { B_sptr_t b(new B()); b->f(); return 0; } the program will be terminated with the following message terminate called after throwing an instance of 'boost::bad_weak_ptr' what(): boost::bad_weak_ptr Aborted -- Regards, R. P. Janaka