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

struct A { };

struct B: public A { };

class C
{
public:
  C(A& _a)
    : a(_a)
  { }

private:
  A& a;
};

class D
{
public:
  D(B& b_) : b(b_) { }
private:
  B& b;
  void someFunc()
  {
    C* c1 = new C(b); // Working
    boost::shared_ptr<C> c2 = boost::make_shared<C>(b); // not working
  }
};

int main()
{
  B b;
  D d(b);
}
