Both Marshall Clines' "C++ FAQ Lite" and Scott Meyers' Effective C++ suggest using functions returning local static objects to avoid possible problems with non-local static object initialization order.
In short (from "Effective C++", 3rd edition by Scott Meyers):
FileSystem& tfs()
{
static FileSystem fs;
return fs;
}
Both writers add that this is similar to the Singleton pattern, except that this does not ensure that the local fs is the only instance of a FileSystem.
Now, in a situation where one instance of resource-managing class T is enough, what would be your reasons to prefer a Singleton class or this local static approach over one another? It is not strictly necessary to limit using the class T to just one instance, although our application does not need more than one.
Obviously having a global object is an issue when doing TDD, but in this case both approaches are global.