В вашем коде вы использовали шаблон для создания двух функций, одна функция использует тип int
, другая функция использует тип double
:
void fun(const int &x)
{
static int count = 0;
cout << "x = " << x << " count = " << count << endl;
++count;
return;
}
void fun(const double &x)
{
static int count = 0;
cout << "x = " << x << " count = " << count << endl;
++count;
return;
}
Компилятор может распознать второй fun<int>(1)
как вызов указанной выше целочисленной функции, поэтому нет необходимости создавать третью функцию.
Передача по ссылке или const
ссылка такая же, как с функциями template
, как и с обычными функциями ; template
влияет только на тип данных, а не на то, как передаются параметры.