The rules of C++ for when static data members are guaranteed to be initialized get complex (at least to me they are). If you have the entire program in a single module, static initialization becomes easy. It's when you're dealing with multi-module programs where it becomes risky.
Here is a link to such a scenario:
I have also seen static members declared in other modules to not be initialized after main() is called.