I have written a templated singleton class in C++ but I am afraid that it is not properly destroyed. Can you advise me on that ? my singleton.h#ifndef SINGLETON_H#define SINGLETON_Htemplate <typename T>class Singleton{public:    static T& Instance();protected:    virtual ~Singleton();    inline explicit Singleton();private:    static T* _instance;    static T* CreateInstance();};template<typename T>T* Singleton<T>::_instance = 0;#endif // SINGLETON_Hsingleton.cpp#include singleton.h#include <cstdlib>template <typename T>Singleton<T>::Singleton(){    assert(Singleton::_instance == 0);    Singleton::_instance = static_cast<T*>(this);}template<typename T> T& Singleton<T>::Instance(){    if (Singleton::_instance == 0)    {        Singleton::_instance = CreateInstance();    }    return *(Singleton::_instance);}template<typename T>inline T* Singleton<T>::CreateInstance(){    return new T();}template<typename T>Singleton<T>::~Singleton(){    if(Singleton::_instance != 0)    {        delete Singleton::_instance;    }    Singleton::_instance = 0;}and that's how I call it (with normal - not templated or anything - class Game )Singleton<Game>::Instance().run();
C++ templated singleton class - properly destroyed?
c++;singleton;template