https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102410
Bug ID: 102410
Summary: parameter pack expansion twice when there is default
parameter during template specialization
Product: gcc
Version: 11.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: nickhuang99 at hotmail dot com
Target Milestone: ---
The following code should NOT be accepted because parameter pack should be just
"int*" without "double" which is considered as "Extra".
template<class...Ts,class Extra, class First=char>
void foo(First, Extra, Ts...){}
template<>
void foo<int*,double>(char,double,int*,double){}
As a contrast, the following code is rejected which is wrong.
template<class...Ts,class Extra, class First=char>
void foo(First, Extra, Ts...){}
template<>
void foo<int*,double>(char,double,int*){}