https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107111
Bug ID: 107111 Summary: GCC accepts invalid program involving function declaration with pack expansion Product: gcc Version: 12.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: jlame646 at gmail dot com Target Milestone: --- The following program is incorrectly accepted by gcc. Demo: https://godbolt.org/z/rvfqzo5YW ``` template<typename T, typename... V> struct C { T v(V()...);; }; int main() { C<int> c; //works with gcc but rejected in clang C<int, double, int, int> c2; //same here: works with gcc but rejected in clang } ``` This is invalid because the construct `V()...` is actually equivalent to `V(),...`. So `V` is not expanded and this must be rejected.