Just to clarify, I find composite type obscure enough that I can't
find any usefull use cases.
what is a composite type? I'm an experienced C programmer and I don't
casually use the term. A struct?
6.2.7:
> 3. A composite type can be constructed from two types that are
> compatible; it is a type that is compatible with both of the two
> types and satisfies the following conditions:
>
> — If one type is an array of known constant size, the composite
> type is an array of that size; otherwise, if one type is a
> variable length array, the composite type is that type.
>
> — If only one type is a function type with a parameter type list
> (a function prototype), the composite type is a function
> prototype with the parameter type list.
>
> — If both types are function types with parameter type lists, the
> type of each parameter in the composite parameter type list is
> the composite type of the corresponding parameters.
>
> These rules apply recursively to the types from which the two types
> are derived.
>
> 4 For an identifier with internal or external linkage declared in a
> scope in which a prior declaration of that identifier is visible,47)
> if the prior declaration specifies internal or external linkage, the
> type of the identifier at the later declaration becomes the
> composite type.
>
> 5 EXAMPLE Given the following two file scope declarations:
>
> int f(int (*)(), double (*)[3]);
> int f(int (*)(char *), double (*)[]);
>
> The resulting composite type for the function is:
>
> int f(int (*)(char *), double (*)[3]);
> 47) As specified in 6.2.1, the later declaration might hide the prior
> declaration.