In C++ using class level static instance for singletone can be problematic. Since the order of initialization of two static object in different translation unit is undefined. Hence it is recommended to use Method level static object, which you did. In this case it is guaranteed to be initialized first time the method is called, also has the advantage of not creating the object if not needed.
Edit
I guessed it summarizes the answers:
- For C++, using statics method level is more secured
- Not to me
- For single threaded app, this is ok.