Ho anche avuto questo problema e ho trovato una soluzione alternativa per il mio caso.
In questo articolo l'autore ha lo stesso problema
https://www.iphonelife.com/blog/31369/swift-programming-101-generics-practical-guide
Quindi il problema sembra essere che il compilatore deve inferire il tipo di T in qualche modo. Ma non è consentito usare semplicemente il <tipo> generico (params ...).
Normalmente, il compilatore può cercare il tipo di T, scansionando i tipi di parametro perché è qui che in molti casi viene utilizzato T.
Nel mio caso è stato un po 'diverso, perché il tipo di ritorno della mia funzione era T. Nel tuo caso sembra che tu non abbia usato affatto T nella tua funzione. Immagino che tu abbia appena semplificato il codice di esempio.
Quindi ho la seguente funzione
func getProperty<T>( propertyID : String ) -> T
E nel caso, per esempio
getProperty<Int>("countProperty")
il compilatore mi dà l'errore:
Non è possibile specializzare esplicitamente una funzione generica
Quindi, per fornire al compilatore un'altra fonte di informazioni da cui dedurre il tipo di T, è necessario dichiarare esplicitamente il tipo di variabile in cui viene salvato il valore restituito.
var value : Int = getProperty("countProperty")
In questo modo il compilatore sa che T deve essere un numero intero.
Quindi penso che nel complesso significhi semplicemente che se specifichi una funzione generica devi almeno usare T nei tuoi tipi di parametro o come tipo restituito.