Por que meu compilador C ++ permite chamadas recursivas para main? [duplicado]

Possível duplicado:
É legal recursar para main () em C ++?

#include <iostream>
using namespace std;

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

O gcc compila o códigohttp://ideone.com/lIp3A&nbsp;. Eu sei que main não pode ser usado dentro de main em C ++. Como esse código é compilado?