Perché mi viene concesso di utilizzare una variabile con const nella dimensione di un array in C?

Quando eseguo il seguente codice, funziona bene per C:

#include int main(void) { const int x=5; char arr[x]; printf("%d",sizeof(arr)); } 

Ma non solo avevo letto prima che le variabili qualificate const non sono costanti real (è per questo che non possono essere utilizzate in case condizione di switch-case ), ma il seguente link da IBM conferma che ( IBMLINK ) e dice:

  const int k = 10; int ary[k]; /* allowed in C++, not legal in C */ 

Perché allora posso utilizzare una variabile const abilitata in C come dimensione di un array senza errori?