Por que o compilador não detecta fora dos limites na inicialização constante da cadeia de caracteres?

Eu li essa pergunta e sua resposta em um livro. Mas eu não entendi a justificativa do livro.

O código a seguir compilará?

int main()
{
   char str[5] = "fast enough";
   return 0;
}

E a resposta foi:

O compilador nunca detecta o erro se os limites de uma matriz forem excedidos.

Eu não consegui.

Alguém pode por favor explicar isso?

questionAnswers(6)

yourAnswerToTheQuestion