Consider the following program.

```
#include <iostream>
using namespace std;

int sum (int & a, int & b)
{
  cout <<" NOn template function "<<endl;
  return a+b;
}

template <typename T>
int sum ( const T & a, const T & b)
{
  cout<<"Template Generated .."<<endl;
  return a+b;
};

int main(int argc, char ** argv)
{
  cout <<sum(10,20)<<endl;;
}

```

**What is the problem:**

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. 

Kindly point of what mistake i am doing here?