Шаблоны функций - специальные функции, которые могут работать с универсальными типами. Это позволяет нам создавать шаблон функции, функциональность которого может быть адаптирована больше чем к одному типу или классу, не повторяя весь код для каждого типа.
Для объявления шаблонной функции используется ключевое слово template. Определение шаблонной функции имеет следующий вид:
Template <список_шаблонных_параметров> тип_возвращаемого_значения
Имя_функции(параметры)