passando array typedef (tamanho fixo) por valor

Estou tendo dificuldade para entendertypedefadrão para matrize

typedef char Char10[10];
void fun (Char10 a)  // not passing reference (interested in pass by value)
{
  if(typeid(Char10) == typeid(char*))
    throw 0;  // <--- never happens
}

int main ()
{
  char a[10];  fun(a);  // ok
  char b[11];  fun(b);  // why works ?
}

Por que os diferentes tamanhos de matriz por valor são aceitos porfun()? Estamoschar[10] echar[11] tipos não diferentes?

Edita: Para quem disser que é um ponteiro, veja meu código editado.char[10] echar* parece não corresponder.

questionAnswers(8)

yourAnswerToTheQuestion