Eu também tive esse problema e encontrei uma solução alternativa para o meu caso.
Neste artigo o autor tem o mesmo problema
https://www.iphonelife.com/blog/31369/swift-programming-101-generics-practical-guide
Portanto, o problema parece ser que o compilador precisa inferir o tipo de T de alguma forma. Mas não é permitido simplesmente usar <type> genérico (params ...).
Normalmente, o compilador pode procurar o tipo de T, examinando os tipos de parâmetro porque é onde T é usado em muitos casos.
No meu caso foi um pouco diferente, porque o tipo de retorno da minha função era T. No seu caso, parece que você não usou T em sua função. Eu acho que você simplificou o código de exemplo.
Portanto, tenho a seguinte função
func getProperty<T>( propertyID : String ) -> T
E no caso de, por exemplo
getProperty<Int>("countProperty")
o compilador me dá o erro:
Não é possível especializar explicitamente uma função genérica
Portanto, para dar ao compilador outra fonte de informação para inferir o tipo de T, você deve declarar explicitamente o tipo da variável em que o valor de retorno é salvo.
var value : Int = getProperty("countProperty")
Dessa forma, o compilador sabe que T deve ser um inteiro.
Portanto, acho que, no geral, significa simplesmente que, se você especificar uma função genérica, terá que usar pelo menos T em seus tipos de parâmetro ou como um tipo de retorno.