#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);
}
I2luY2x1ZGUgPGJvb3N0L3NoYXJlZF9wdHIuaHBwPgojaW5jbHVkZSA8Ym9vc3QvbWFrZV9zaGFyZWQuaHBwPgoKc3RydWN0IEEgeyB9OwoKc3RydWN0IEI6IHB1YmxpYyBBIHsgfTsKCmNsYXNzIEMKewpwdWJsaWM6CiAgQyhBJiBfYSkKICAgIDogYShfYSkKICB7IH0KCnByaXZhdGU6CiAgQSYgYTsKfTsKCmNsYXNzIEQKewpwdWJsaWM6CiAgRChCJiBiXykgOiBiKGJfKSB7IH0KcHJpdmF0ZToKICBCJiBiOwogIHZvaWQgc29tZUZ1bmMoKQogIHsKICAgIEMqIGMxID0gbmV3IEMoYik7IC8vIFdvcmtpbmcKICAgIGJvb3N0OjpzaGFyZWRfcHRyPEM+IGMyID0gYm9vc3Q6Om1ha2Vfc2hhcmVkPEM+KGIpOyAvLyBub3Qgd29ya2luZwogIH0KfTsKCmludCBtYWluKCkKewogIEIgYjsKICBEIGQoYik7Cn0K