I just thought of this trying to figure out Swift generics. I have come up with the following test code where I'd like to call `f()`. I can't figure out how I can tell the compiler that the `T` is `Classy` in this case.

```
protocol Prot {
    func doSomething()
    static func instance() -> Prot
}

class Classy: Prot {

    func doSomething() {
        print("here")
    }

    static func instance() -> Prot {
        return Classy()
    }
}

func f<T: Prot>() {
    T.instance().doSomething()
}

f() // error
f<Classy>() // error

```