At the beginning, 9.3.4.6 [dcl.fct] paragraph 9 required that
The type of a parameter or the return type for a function definition
shall not be an incomplete class type (possibly cv-qualified) unless
the function definition is nested within the member-specification for
that class (including definitions in nested classes defined within the
class).
A defect report was raised, and a subsequent resolution proposed and applied retrospectively (emphasis mine):
Types shall not be defined in return or parameter types. The type of a
parameter or the return type for a function definition shall not be an
incomplete class type (possibly cv-qualified) unless the function is
deleted (9.5.3 [dcl.fct.def.delete]) or the definition is nested
within the member-specification for that class (including definitions
in nested classes defined within the class).
Therefore, Clang is wrong.