#ifndef DPL_SINGLETON_IMPL_H
#define DPL_SINGLETON_IMPL_H
+#include <functional>
+
/*
* WARNING!
*
*/
namespace DPL {
+
+template<typename Class>
+std::once_flag Singleton<Class>::m_onceFlag;
+
template<typename Class>
Singleton<Class>& Singleton<Class>::InternalInstance()
{
- static Singleton<Class> instance;
- return instance;
+ static Singleton<Class>* instance = NULL;
+ std::call_once(m_onceFlag,
+ [] {
+ instance = new Singleton<Class>;
+ });
+ return *instance;
}
template<typename Class>