https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103740
Bug ID: 103740 Summary: A function template declaration with a template-parameter in the last that has no default argument or can be deduced shall be ill-formed Product: gcc Version: 11.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: xmh970252187 at gmail dot com Target Milestone: --- template<class... T, class U> void g() { } This template declaration should be ill-formed since it violates [temp.param] p14 A template parameter pack of a function template shall not be followed by another template parameter unless that template parameter can be deduced from the parameter-type-list ([dcl.fct]) of the function template or has a default argument ([temp.deduct]). Template parameter `U` satisfies none of them, hence the declaration should be ill-formed. It is also a formal example that the comment says it is an error.