Extensões de matriz Swift "where"

A partir do Swift 2.0, parece que podemos nos aproximar de extensões de tipos genéricos aplicáveis a situações predicadas.

Embora ainda não possamos fazer isso:

protocol Idable {
    var id : String { get }
}

extension Array where T : Idable {
    ...
}

... agora podemos fazer isso:

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

... e Swift aceita gramaticalmente. No entanto, para a minha vida, não consigo descobrir como fazer o compilador feliz quando preenche o conteúdo da função de exemplo. Suponha que eu seja o mais explícito possível:

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

... o compilador não aceitará o fechamento fornecido para filtrar, reclamando

Não é possível invocar 'filter' com uma lista de argumentos do tipo '((T) -> Bool)'

Semelhante se o item for especificado como Idable. Alguém teve alguma sorte aqui?

questionAnswers(1)

yourAnswerToTheQuestion