A book I am reading suggests that it is possible to "lazy instantiate" singletons (i.e. when GetInstance() is called, check if an instance exists, and if so, return it, and if not, create one and return it). The singletons I've actually seen (albeit in Java) do this. But the book decides instead to write a separate Creator() function (i.e. check if an instance doesn't exist, and if not, create one).
However the book is unclear on why it decides to do this: it vaguely says it's "generally cleaner". With their implementation, if Creator() hasn't been called, GetInstance() will return NULL. We don't gain anything performance-wise by not checking whether or not the instance exists in GetInstance(), because it just means whatever code is calling GetInstance() has to handle what happens if the instance is NULL instead.
So can anyone explain to me what the actual benefit of having a separate Creator() function is? Or maybe an example of when we might want a singleton's GetInstance() function to return NULL?