Pourquoi l’assignation de littéraux composés ne fonctionne-t-elle pas sans conversion de type

J’ai une question sur les littéraux en C.

int a; //a is an integer that is assigned an integer literal 414 a = 414; float b; //b is a float that is assigned a float literal of 3.14 b = 3.14; struct point { int x,y; }; struct point b; //{5,6} is a compound literal that is assigned to a struture. b = {5,6}; //doesn't work. b = (struct point){5,6}; //works. 

Cela ne semble pas fonctionner sans typecast? Quelle est la raison pour ça?

(struct point){5,6} dans son ensemble est un littéral composé.

C11 §6.5.2.5 Littéraux composés

Une expression postfixe qui consiste en un nom de type entre parenthèses suivi d’une liste d’accolades joint par une accolade est un littéral composé.