Программирование на C и C++

Онлайн справочник программиста на C и C++

Ограничения на функции-шаблоны

Функции-шаблоны сходны с перегруженными функциями, за исключением того, что они более ограничивающи. Для перегруженных функций можно выполнять различные действия в теле каж­дой функции. В отличие от этого, для функции-шаблона необходимо выполнять одни и те же общие действия, и только тип данных может быть различным. Например, в следующем примере перегруженные функции не могут быть заменены на функцию-шаблон, поскольку они выполняют различные действия:

#include <iostream.h>
#include <math.h>
void myfunc(int i)
{
cout << "value is: " << i << "\n";
}
void myfunc(double d)
{
double intpart;
double fracpart;
fracpart = modf(d, &intpart);
cout << "Fractional part: " << fracpart;
cout << "\n";
cout << "Integer part: " << intpart;
}
int main()
{
myfunc(1);
myfunc(12.2);
return 0;
}

Другим ограничением на функции-шаблоны является то, что виртуальная функция не может быть функцией-шаблоном.