En C++ Primer Plus (2001, traducción Checa) He encontrado estos diferentes sintaxis de la plantilla de especialización:sintaxis de C++ plantillas de especialización
plantilla de función
template <typename T> void foo(T);
sintaxis especialización
void foo(int param); // 1
void foo<int>(int param); // 2
template <> void foo<int>(int param); // 3
template <> void foo(int param); // 4
template void foo(int param); // 5
Google buscando un poco, he encontrado solo ejemplos No.3. ¿Hay alguna diferencia (en la llamada, compilación, uso) entre ellos? ¿Algunos de ellos están obsoletos/obsoletos? ¿Por qué no usar el No.1?
Es una buena idea utilizar en general (y pensar en) el término "plantilla de función" ya que esto enfatiza que es una plantilla, no una función, y que donde sea que se necesite una función, no se puede usar una plantilla (solo una especialización, ya que esas son funciones entonces). – PlasmaHH
O bien una mala traducción o simplemente te equivocas. Le sugiero que lea más acerca de la diferencia entre las plantillas y la sobrecarga de funciones. – varepsilon