title: direct initialization of a POD variable does not work but copy initialization does when pushing the variable onto a vector
body: <p>Why does the following code fail to compile, while the two examples after compile successfully? I'm using VS 2008 on Windows 7.</p>
  
  <hr>
  
  <p>Direct initialization of POD (fails):</p>
  
  <pre><code>int pod();
  std::vector&lt;int&gt; pods;
  //pods.push_back(pod); // This will generate a compiler error
  // Compile error: 1&gt;c:\test.hpp(43) : error C2664: 'std::vector&lt;_Ty&gt;::push_back' : cannot convert parameter 1 from 'int (__cdecl *)(void)' to 'const int &amp;'
  </code></pre>
  
  <hr>
  
  <p>Copy initialization of POD (succeeds:</p>
  
  <pre><code>int pod = int();
  std::vector&lt;int&gt; pods;
  pods.push_back(pod); // No error!
  </code></pre>