J'ai également eu ce problème et j'ai trouvé une solution de contournement pour mon cas.
Dans cet article, l'auteur a le même problème
https://www.iphonelife.com/blog/31369/swift-programming-101-generics-practical-guide
Le problème semble donc être que le compilateur doit en quelque sorte déduire le type de T. Mais il n'est pas permis d'utiliser simplement le <type> générique (params ...).
Normalement, le compilateur peut rechercher le type de T, en analysant les types de paramètres car c'est là que T est utilisé dans de nombreux cas.
Dans mon cas, c'était un peu différent, car le type de retour de ma fonction était T. Dans votre cas, il semble que vous n'ayez pas du tout utilisé T dans votre fonction. Je suppose que vous venez de simplifier l'exemple de code.
J'ai donc la fonction suivante
func getProperty<T>( propertyID : String ) -> T
Et en cas de, par exemple
getProperty<Int>("countProperty")
le compilateur me donne l'erreur:
Impossible de spécialiser explicitement une fonction générique
Ainsi, pour donner au compilateur une autre source d'informations pour déduire le type de T, vous devez déclarer explicitement le type de la variable dans laquelle la valeur de retour est enregistrée.
var value : Int = getProperty("countProperty")
De cette façon, le compilateur sait que T doit être un entier.
Donc, je pense que dans l'ensemble, cela signifie simplement que si vous spécifiez une fonction générique, vous devez au moins utiliser T dans vos types de paramètres ou comme type de retour.