Разница между явным и неявным созданием шаблонных функций заключается в том, как происходит специализация шаблонов для конкретных типов данных или значений. 5
Явное создание позволяет явно задавать аргументы для шаблона функции, что может использоваться, например, для ускорения компиляции. 23 Например, если в заголовочном файле объявить extern template и в одном из .cpp-файлов сделать явное инстанциирование, компилятор не будет больше инстанциировать данную специализацию шаблона в тех единицах трансляции, где включён заголовочный файл. 3
Неявное создание происходит, когда для шаблона функции не явно задаются аргументы, а параметр шаблона выводится или указывается напрямую при вызове функции. 4 Например, можно вызвать функцию так, чтобы параметр шаблона мог быть выведен, либо определить переменную с типом инстанции шаблона и присвоить ей адрес шаблона. 4