写了个单例模式的模板,为啥Garbo没有析构

写了个单例模式的模板,为什么Garbo没有析构
写了个单例模式的模板,在Garbo析构函数设断点了,发现没有被析构,这是为什么呢?

.h文件:

class CriticalSection
{
public:
  CriticalSection()   {InitializeCriticalSection(&cs_);}
  ~CriticalSection()  {DeleteCriticalSection(&cs_);}
  void Lock()         {EnterCriticalSection(&cs_);}
  void UnLock()       {LeaveCriticalSection(&cs_);}

protected:
  CRITICAL_SECTION cs_;
};


template <typename T>
class Singleton
{
public:
  static T* GetInstance()
  {
    if(!m_)
    {
      cs.Lock();
      if(!m_)
        m_ = new T();
      cs.UnLock();
    }
    return m_;
  }

  ~Singleton(){}

private:
  Singleton(){}

  static T* m_;
  static CriticalSection cs;

  class Garbo
  {
  public:
    ~Garbo()
    {
      if(Singleton<T>::m_){
        delete Singleton<T>::m_;
        Singleton<T>::m_ = NULL;
      }
    }
  };

  static Garbo garbo;
};

.cpp文件:
template<typename T>
T* Singleton<T>::m_ = NULL;

template<typename T>
CriticalSection Singleton<T>::cs;

template<typename T>
typename Singleton<T>::Garbo Singleton<T>::garbo;

// 测试类
class CA{
public:
  CA(){std::cout<<"AAAA\n";}

  ~CA(){
    std::cout<<"BBBB\n";
  }

  void Run(){
    for(int k = 0; k < 10; ++k)
      std::cout<< k << " ";
  }
};

int main()
{
  CA *a = Singleton<CA>::GetInstance();
  a->Run();

  return 0;
}

------解决方案--------------------
template ,一般情况下你没用到的东西编译器生成代码的时候就不会帮你生成