También tuve este problema y encontré una solución para mi caso.
En este artículo el autor tiene el mismo problema.
https://www.iphonelife.com/blog/31369/swift-programming-101-generics-practical-guide
Entonces, el problema parece ser que el compilador necesita inferir el tipo de T de alguna manera. Pero no está permitido usar genérico <type> (params ...).
Normalmente, el compilador puede buscar el tipo de T, escaneando los tipos de parámetros porque aquí es donde T se usa en muchos casos.
En mi caso fue un poco diferente, porque el tipo de retorno de mi función era T. En su caso, parece que no ha usado T en absoluto en su función. Supongo que acaba de simplificar el código de ejemplo.
Entonces tengo la siguiente función
func getProperty<T>( propertyID : String ) -> T
Y en el caso de, por ejemplo
getProperty<Int>("countProperty")
el compilador me da el error:
No se puede especializar explícitamente una función genérica
Entonces, para darle al compilador otra fuente de información para inferir el tipo de T, debe declarar explícitamente el tipo de variable en la que se guarda el valor de retorno.
var value : Int = getProperty("countProperty")
De esta forma, el compilador sabe que T tiene que ser un número entero.
Entonces, creo que, en general, simplemente significa que si especifica una función genérica, al menos debe usar T en sus tipos de parámetros o como un tipo de retorno.