That sounds like hard mode, the easy solution is to just initialize them the first time they are used. GetInstance(){ if (!instance)instance = new Foo; return instance;}, add a lock if you need thread safety and done.
Foo &getInstance() { static Foo instance; return instance; }
Guaranteed to be threadsafe by the standard, even.