[dcl.fct.def.general] Non-templated functions cannot have a requires-clause CWG2831 by sdkrystian · Pull Request #3936 · cplusplus/draft (original) (raw)
CA378 intended to prohibited constraining non-templated functions. As a result, the following wording was changed in [dcl.decl] p4:
The optional requires-clause in an init-declarator or member-declarator shall be present only if the declarator declares a templated function.
Consider a function-definition. It has neither an init-declarator nor a member-declarator, and the "a function definition must be a valid declaration" rule doesn't account for the requires-clause.
I think the cleanest way to fix this is to add a sentence to [dcl.fct.def.general] p3 explicitly prohibiting this rather than dancing around the "definition must be a valid declaration" rule as context would have to be accounted for.