Função de matriz genérica rápida para encontrar todos os índices de elementos que não correspondem ao item

Swift 3

Tentando escrever uma extensão de matriz genérica que obtém todos os índices de itens que NÃO têm o mesmo valor

exemplo

 let arr: [String] = ["Empty", "Empty", "Full", "Empty", "Full"]
 let result: [Int] = arr.indexes(ofItemsNotEqualTo item: "Empty")
 //returns [2, 4]

Eu tentei fazer uma função genérica:

extension Array {

    func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?  {
        var result: [Int] = []
        for (n,, elem) in self.enumerated() {
            if elem  != item {
                result.append(n)
            }
        }
        return result.isEmpty ? nil : result
    }
}

Mas isso dá um aviso:O operador binário não pode ser aplicado a operandos do tipo "Elemento" e "T".

Então, eu fiz isso onde lancei o elemento (observe oComo?)

extension Array {

    func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]?  {
        var result: [Int] = []
        for (n, elem) in self.enumerated() {
            if elem as? T != item {
                result.append(n)
            }
        }
        return result.isEmpty ? nil : result
    }
}

Mas agora parece que a verificação de tipo saiu pela janela, porque se eu passar um número inteiro, obtenho o resultado errado

 let arr: [String] = ["Empty", "Empty", "Full", "Empty", "Full"]
 let result: [Int] = arr.indexes(ofItemsNotEqualTo item: 100)
 //returns [0, 1, 2, 3, 4]

A ajuda seria muito apreciada.

Existe uma maneira melhor de fazer isso com oreduzir&nbsp;função?