¿Por qué mi compilador de C ++ permite llamadas recursivas a main? [duplicar

Posible duplicado:
Es legal recurrir a main () en C ++?

#include <iostream>
using namespace std;

int main() {
  static int var = 5;
  std::cout << --var;
  if(var)
    main();
}

gcc compila el códigohttp: //ideone.com/lIp3. Sé que main no se puede usar dentro de main en C ++. ¿Cómo se compila este código?