https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66409
--- Comment #10 from anlauf at gcc dot gnu.org --- (In reply to Mikael Morin from comment #7) > I think it's in 15.4.3.4.5 Restrictions on generic declarations. > But it's too late for me to decipher what's written there. Tomorrow you'll discover: C.10.6 Rules ensuring unambiguous generics (15.4.3.4.5) There is talk about "limited type mismatch", and some examples about polymorphic variables, but you need a clear head to understand it. Unfortunately there is no mentioning of TYPE(*) in that context; this is only explained in 7.3.3.2: "An entity that is declared using the TYPE(*) type specifier is assumed-type and is an unlimited polymorphic entity. It is not declared to have a type, and is not considered to have the same declared type as any other entity, including another unlimited polymorphic entity." So what does it mean in the present context?