title: Legal definitions of main() in C++14
body: <p>The last draft of C++14 that I was able to find says, regarding <code>main()</code> [3.6.1]:</p>
  <blockquote>
  <p>An implementation shall not predefine the main function. This function shall not be overloaded. It shall have a return type of type int, but otherwise its type is implementation-defined. All implementations shall allow both</p>
  <p>— a function of () returning int and</p>
  <p>— a function of (int, pointer to pointer to char) returning int</p>
  </blockquote>
  <p>and (paragraph 5)</p>
  <blockquote>
  <p>If control reaches the end of main without encountering a return statement, the effect is that of executing</p>
  <p><code>return 0;</code></p>
  </blockquote>
  <p>Does this mean that all of the following are legal C++14 minimal programs? If any isn't, why not?</p>
  <ol>
  <li><code>auto main() -&gt; int {}</code></li>
  <li><code>auto main() { return 0; }</code></li>
  <li><code>auto main() {}</code></li>
  </ol>