とくに意味をなさないうえに冗長なコードですが、サンプルのために、下記のようなソースがあるとします。

class Hoge<T: Equatable, U: Equatable> {
    var x: T?
    var y: U?

    init() {
    }
}

typealias TT = String
typealias UU = Int

let hoge = Hoge<TT, UU>()

TにはStringUにはIntを教えることができました(この教えるにあたる専門用語を忘れてしまいました... 追記:特殊化(specialization)でした)。

これと同じことをするファクトリーのような関数を作りたいと考え下記のようにしましたがうまくいきません。うまい書き方はありますか?

func hogeFactory<TT: Equatable, UU: Equatable>() -> Hoge<TT, UU> {
    return Hoge<TT, UU>()
}

let h = hogeFactory<String, Int>()

MyPlayground.playground:12:20: note: while parsing this '<' as a type parameter bracket
let h = hogeFactory()