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

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

Функции с двумя типами-шаблонами

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

#include <iostream.h>
template <class type1, class type2>
void myfunc(type1 x, type2 y)
{
cout << X << ' ' << у << endl;
}
int main()
{
myfunc(10, "hi");
myfunc(0.23, 10L);
return 0;
}

В этом примере типы-шаблоны type1 и type2 заменяются компилятором на типы int, char*, double и long соответственно, причем компилятор создает два различных экземпляра функции myfunc() в функции main(). Следует иметь в виду, что когда создается функция-шаблон, то по существу этим компилятору разрешается создавать столько различных версий этой функции, сколько необходи­мо, чтобы обрабатывать те типы данных, которые передаются этой функции при ее вызове.