Can you omit the return type in main function? : <p>Are there some special rules with respect to the declaration of the <code>main</code> function?</p>

<p>According to <a href="http://ideone.com/eEoa8n">ideone</a> this is legal C++:</p>

<pre><code>main()  // As opposed to int main()
{
   return 0;
}
</code></pre>

<p>On the other hand, normal functions do not seem to have the privilege to avoid the return type:</p>

<pre><code>f(){} 

int main()
{
    return 0;
}
</code></pre>

<p>Gives the error:</p>

<blockquote>
  <p>prog.cpp:1:3: error: ISO C++ forbids declaration of 'f' with no type
  [-fpermissive]  f(){}    ^</p>
</blockquote>

<p>Is the <code>main</code> function special in this case?</p>
