#pragma once #include template class CSingletonBase { public: static T &get_instance() noexcept(std::is_nothrow_constructible::value) { static T instance; return instance; } virtual ~CSingletonBase() noexcept { } CSingletonBase(const CSingletonBase &) = delete; CSingletonBase &operator=(const CSingletonBase &) = delete; protected: CSingletonBase() { } };