template<class T, class F = NewObject<T>, int instance = 0>
class Singleton< T, F, instance >
This function safely initializes a static object in a multithreaded environment without using locks. It may leak memory when two threads try to initialize the static object at the same time but this should be acceptable since each static object is only initialized once per session.