не совсем понятно поведение..
но и реализация как-то не совсем понятна..
предпочитаю такого рода магию:
template <class T>
class Singleton
{
protected:
Singleton() { }
public:
static T& Instance()
{
static T self;
return self;
}
};
class Foo : public Singleton<Foo>
{
};