Reference (section label): [dcl.fct] paragraph 4
Jens wants a CWG issue for this; see cplusplus/draft#6575 (comment) for previous discussion.
Issue description
Implementations diverge (https://godbolt.org/z/q5bjWEs8o) on whether the following declaration is ill-formed:
While [dcl.fct] paragraph 4 states that array parameter types are adjusted to pointer types, [dcl.array] paragraph 1 clearly states that a zero-length array is not a valid type in the first place.
It should be clarified that parameter type adjustment does not legitimize zero-length arrays in function parameters.
Proposed resolution
Expand [dcl.fct] example 2 as follows:
...
void h(int (*)(int)) {} // defines #3
+
+void j(int[0]); // error: int[0] is not a valid type