関数内のstatic変数の初期化

class SingletonClass {
 private:
     SingletonClass(void) {}
 public:
     static SingletonClass& getInstance(void) {
         static SingletonClass singleton;
         return singleton;
     }
     void doSomething(void);
 };

こういう関数内のstatic変数、↑だとsingletonっていつ初期化入るか把握できてます?
getInstanceが呼ばれた時にsingleton変数が生成&初期化されるってちゃんと把握できてる人ってどの位いるんだろう。

シングルトン書くには便利なパターンだけど、それを知らない人が混じってると初期化のタイミングわからずにはまりそうだよね。