If a
template-parameter
of a class template, variable template, or alias template has
a default template argument,
each subsequent
template-parameter
shall either have a default template argument supplied or
be a template parameter pack
. 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])
. A template parameter of a deduction guide template (
[temp.deduct.guide])
that does not have a default argument shall be deducible
from the parameter-type-list of the deduction guide template
. [
Example 7:
template<class T1 = int, class T2> class B;
template<class... T, class... U> void f() { }
template<class... T, class U> void g() { }
—
end example]