話は変わりますけど、main()でコンパイルエラーになるのはいいですね。
VCは以下が全部、問題なく通る……。

main() {} //まあ、K&Rだし
main() { return 0 ; } //これは、まあ、Cという歴史的理由で通るというのも分かるかな。
void main() {} //これはありえない。



int main() {}
ただこれは、禿の解説を見るに、問題なさそうなんですが。

ttp://www.research.att.com/~bs/bs_faq2.html#void-main

 >In C++, main() need not contain an explicit return statement. In that case, the value returned is 0, meaning successful execution. For example: