Crear una extensión para filtrar nils de una matriz en Swift

Estoy tratando de escribir una extensión en Array que permita que una matriz de T opcionales se transforme en una matriz de T no opcionales.

p.ej. esto podría escribirse como una función libre como esta:

func removeAllNils(array: [T?]) -> [T] {
    return array
        .filter({ $0 != nil })   // remove nils, still a [T?]
        .map({ $0! })            // convert each element from a T? to a T
}

Pero, no puedo hacer que esto funcione como una extensión. Estoy tratando de decirle al compilador que la extensión solo se aplica a matrices de valores opcionales. Esto es lo que tengo hasta ahora:

extension Array {
    func filterNils<U, T: Optional<U>>() -> [U] {
        return filter({ $0 != nil }).map({ $0! })
    }
}

(¡no se compila!)

Respuestas a la pregunta(6)

Su respuesta a la pregunta