#include <iostream>
struct D{};
struct B{};
struct C
{
C();
};
struct A
{
A()
:b(new B)
,c(new C)
,d(new D)
{
std::cerr << "A";
}
B * b;
C * c;
D * d;
static A& pInstance()
{
static A a;
return a;
}
};
C::C()
{
std::cerr << "C";
A::pInstance().b;
}
int main()
{
A::pInstance();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IER7fTsKc3RydWN0IEJ7fTsKCnN0cnVjdCBDCnsKICAgIEMoKTsKfTsKCnN0cnVjdCBBCnsKQSgpCiAgIDpiKG5ldyBCKQogICAsYyhuZXcgQykKICAgLGQobmV3IEQpCnsKICAgIHN0ZDo6Y2VyciA8PCAiQSI7Cn0KCiAgICBCICogYjsKICAgIEMgKiBjOwogICAgRCAqIGQ7CgogICAgc3RhdGljIEEmIHBJbnN0YW5jZSgpCiAgICB7CiAgICAgICAgc3RhdGljIEEgYTsKICAgICAgICByZXR1cm4gYTsKICAgIH0KfTsKCgpDOjpDKCkKewogICAgc3RkOjpjZXJyIDw8ICJDIjsKICAgIEE6OnBJbnN0YW5jZSgpLmI7Cn0KCmludCBtYWluKCkKewogICAgQTo6cEluc3RhbmNlKCk7Cn0K