Все определения шаблона функции начинаются с ключевого слова template, за которым следует список формальных типов параметров функции, заключенный в угловые скобки (< >). Каждый формальный тип параметра предваряется либо ключевым словом typename, либо ключевым словом class. Формальные типы параметров – это встроенные типы или типы, определяемые пользователем. Они используются для задания типов аргументов функции, задания типов возвращаемого значения функции и объявления переменных внутри тела описания функции. После шаблона следует обычное описание функции.
template < class T > // или template < typename T >
// создается шаблон и начинается определение функции
T maximum ( T value1, T value2, T value3 )
{
T max = value1;
if ( value2 > max )
max = value2;
if ( value3 > max )
max = value3;
return max;
}
Этот шаблон функции объявляет единственный формальный параметр Т как тип данных, который должен проверяться функцией maximum. Когда компилятор обнаруживает вызов maximum в исходном коде программы, этот тип данных, переданных в maximum, подставляется вместо Т всюду в определении шаблона, и С++ создает законченную функцию для определения максимального из трех значений указанного типа данных. Затем заново созданная функция компилируется. Таким образом, шаблоны, в действительности, играют роль средств генерации кода.