そのコードだと、マルチスレッドが考慮されていない。
マルチスレッドを考慮する必要が無ければ、単純にこうで十分なはず。
たしかstaticな変数は最初に扱おうとした瞬間に構築される(コンストラクタが呼ばれる)という規則があったはず。

class Choge{
private:
  static Choge singleton;
  Choge();
  Choge(const Choge&);
  ~Choge();
public:
  static Choge& GetObj(){return singleton;}
};

Choge Choge::singleton;