VC6で Effective C++ のシングルトンをやろうとして下のように記述したら、
コンパイルエラーが出ます。

class Hoge{
public:
  static Hoge& GetInstance(void);
private:
  Hoge(void);
  ~Hoge(void);
};

Hoge& Hoge::GetInstance(void){
  static Hoge obj;
  return obj;
}
Hoge::Hoge(void){
}
Hoge::~Hoge(void){
}

error C2248: 'Hoge::~Hoge' : private メンバ (クラス 'Hoge' で宣言されている)にアクセスできません。

C++の仕様としては、このエラーはおかしくないですか?
ほかのコンパイラではどうなるのか、知ってる方は教えてください。
もしVC6だけのバグなら、.NETでは直ってるかどうかって情報も欲しいっす。