ponteiro fraco fraco quando base e classe derivada ambos herdam de boost :: enable_shared_from_this

Eu tenho uma classe base que deriva de boost :: enable_shared_from_this e, em seguida, outra classe que deriva da classe base e boost :: enable_shared_from_this:

#include <boost/enable_shared_from_this.hpp>
#include <boost/shared_ptr.hpp>

using namespace boost;

class A : public enable_shared_from_this<A> { };

class B : public A , public enable_shared_from_this<B> {
public:
    using enable_shared_from_this<B>::shared_from_this;
};

int main() {
shared_ptr<B> b = shared_ptr<B>(new B());
shared_ptr<B> b_ = b->shared_from_this();

return 0;
}

Isso compila, mas em tempo de execução dá

terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::bad_weak_ptr> >'
  what():  tr1::bad_weak_ptr
Aborted

O que está causando isso, e há alguma maneira de contornar isso?

EDITAR:

E se eu precisar de algo assim:

class A : public enable_shared_from_this<A> { };
class B : public enable_shared_from_this<B> { };    

class C : public A, public B, public enable_shared_from_this<C> {
public:
    using enable_shared_from_this<C>::shared_from_this;
};

tal que A e B precisam compartilhar shared_from_this por conta própria (e um não pode herdá-lo do outro), e C precisa de A, B e shared_from_this?

questionAnswers(2)

yourAnswerToTheQuestion