Como detectar esse parâmetro é uma tupla de dois tipos arbitrários?

Na verdade, o que estou fazendo é mais complexo, mas é possível implementar funções para detectar que algo é uma tupla, independentemente de quais são os tipos de seus elementos.

Este é o meu método que não funciona (veja o comentário na última linha):

func isTuple(b: Any) -> Bool {
    return b is (Any, Any)
}

let myString = "aa"
let myDouble = 1.2
isTuple((myString, myDouble)) //returns false

Por que isso não funciona? Shouln'tAny agir como um "curinga" nas tuplas também? É um bug conhecido do Swift (se não, devo considerá-lo um e relatar)? Existe outra maneira de fazerisTupple método de trabalho?

EDITAR

@ NateCook's answer responde totalmente à pergunta original, mas isso não me ajuda a fazer o que estou tentando fazer. É isso:

Eu preciso não apenas determinar que algo é um tupple, mas também dividi-lo em seus 2 valores sem saber o tipo exato desses valores.

Aqui está o código:

func processIfTuple(b: Any) {
    if reflect(b).disposition == MirrorDisposition.Tuple {
        let (first, second) = b as (Any, Any) //error when casting
        process(first)
        process(second)
    }
}

func process(value: Any) {
    ...
}

processIfTuple(("aa", 1.2))

Isso não funciona por razões semelhantes que o testeb is (Any, Any) não funciona. Desta vez, há um erro ao tentar transmitir. Isso pode ser resolvido? Caso contrário, deve ser considerado um erro de idioma ou recurso ausente e relatado? Definitivamente, leva a muita duplicação de código, porque preciso testar todos os pares possíveis de tipos para uma tupla.

questionAnswers(2)

yourAnswerToTheQuestion