>>668

class A{
static A *inst_;
public:
static A *instance()
{ return inst_; }
void foo(){}
};
A *A::inst_ new A;

class B{
static B *inst_;
public:
static B *instance()
{ return inst_; }
B()
{ A::instance()->foo(); }
};
B *B::inst_ new B;

BのコンストラクタでAのfooを呼んでいるが、Aが生成されてる保証は無い
このように生成順序によってはうまくいかないから