あれからもうちょっと読み進めてみました。そうしたら、ヒントが載ってました。次のようにしたら明示的な削除がいらないように思いました。
デザインパターンって読めばすぐ使えるものでもないようですね。いろいろなパターンが相互に絡み合っていて難しい・・・。
>>735
それは読んだことないです。今度立ち読みしてみます。
class Singleton{
private:
 class SingletonPtr{
 private:
  Singleton* p_;
 public:
  SingletonPtr(Singleton* p):p_(p){}
  ~SingletonPtr(){if(p_!=NULL) delete p_;}
  operator Singleton*(){return p_;}
  SingletonPtr& operator =(Singleton* p){p_=p;return *this;}
 };
 static SingletonPtr pInstance;
protected:
 Singleton(){}
public:
 ~Singleton(){}
 static Singleton* Instance();
};

Singleton::SingletonPtr Singleton::pInstance=Singleton::SingletonPtr(NULL);

Singleton* Singleton::Instance(){
 if(pInstance==NULL) pInstance=new Singleton;
 return pInstance;
}