Swift Array () coerción ambigua sin más contexto, pero solo en extensión

Es legal decir esto arr es una matriz):

let arrenum = Array(arr.enumerated())

Entonces, ¿por qué no es legal decir esto?

extension Array {
    func f() {
        let arrenum = Array(self.enumerated())
        // error: type of expression is ambiguous without more context
    }
}

EDITA Parece que esta es una solución alternativa:

extension Array {
    func f() {
        typealias Tup = (offset:Index, element:Element)
        let arrenum = Array<Tup>(self.enumerated())
    }
}

Pero, ¿por qué es necesario? (¿Y es correcto?)

Respuestas a la pregunta(1)

Su respuesta a la pregunta