#ifndef HEADER_BASE_SINGLE #define HEADER_BASE_SINGLE #include namespace base { template class CSingle { private: CSingle(const CSingle&); CSingle& operator = (const CSingle&); public: CSingle() {} virtual ~CSingle() {} static T& Instance() { std::unique_lock lock(_mutex); static T instance; return instance; } private: static std::mutex _mutex; }; template std::mutex CSingle::_mutex; } #endif