title: function template overloading
body: <p>Consider the following program.</p>
  
  <pre><code>#include &lt;iostream&gt;
  using namespace std;
  
  int sum (int &amp; a, int &amp; b)
  {
    cout &lt;&lt;" NOn template function "&lt;&lt;endl;
    return a+b;
  }
  
  template &lt;typename T&gt;
  int sum ( const T &amp; a, const T &amp; b)
  {
    cout&lt;&lt;"Template Generated .."&lt;&lt;endl;
    return a+b;
  };
  
  
  int main(int argc, char ** argv)
  {
    cout &lt;&lt;sum(10,20)&lt;&lt;endl;;
  }
  </code></pre>
  
  <p><strong>What is the problem:</strong></p>
  
  <p>I was expecting the sum() of non template function to be invoked. But in my output
  template initialized function is invoked. Is it not part of the function template overloading.  </p>
  
  <p>Kindly point of what mistake i am doing here?</p>