¿Por qué deben especializarse las especializaciones de plantillas?

Me refiero a esta respuesta:

https://stackoverflow.com/a/4447057/930315

Me encontré con un problema similar al OP de la pregunta citada, teniendo una función

template<typename T>
void func(T& val);

y su especialización

template<>
void func<mytype>(mytype& val);

resultó en un error de enlazador de símbolos duplicados (los métodos se implementan en un archivo '.tpp' que se incluye al final de mi encabezado). agregandoinline a la función especializada resolvió el problema. ¿Por qué?

Respuestas a la pregunta(3)

Su respuesta a la pregunta