title: Why does the following program compile?
body: <pre><code>#include&lt;iostream&gt;
  
  using namespace std;
  
  int main()
  {
      int abc();
      return 0;
  }
  </code></pre>
  
  <p>When the compiler reaches the line <code>int abc();</code>, it rightly thinks that we are declaring a function named <code>abc</code> which does not take any arguments and whose return type is of type int. Then why is the compiler not throwing me an error because I have not defined a function named <code>abc</code>?</p>