Extensiones de matriz rápidas "dónde"

A partir de Swift 2.0 parece que podemos acercarnos a extensiones de tipos genéricos aplicables a situaciones predicadas.

Aunque todavía no podemos hacer esto:

protocol Idable {
    var id : String { get }
}

extension Array where T : Idable {
    ...
}

... ahora podemos hacer esto:

extension Array {
    func filterWithId<T where T : Idable>(id : String) -> [T] {
    ...
    }
}

... y Swift lo acepta gramaticalmente. Sin embargo, por mi vida, no puedo encontrar la manera de hacer feliz al compilador cuando completo los contenidos de la función de ejemplo. Supongamos que fuera lo más explícito posible:

extension Array {
    func filterWithId<T where T : Idable>(id : String) -> [T] {
        return self.filter { (item : T) -> Bool in
            return item.id == id
        }
    }
}

... el compilador no aceptará el cierre proporcionado para filtrar, quejándose

No se puede invocar 'filtro' con una lista de argumentos de tipo '((T) -> Bool)'

Similar si el artículo se especifica como Idable. ¿Alguien tuvo suerte aquí?