A template 
template-argument A matches a template
template parameter 
P when
A and 
P are compatible and
P is at least as specialized as 
A, ignoring constraints
on 
A if 
P is unconstrained
.  If 
P contains a template parameter pack, then 
A also matches 
P
if each of 
A's template parameters
matches the corresponding template parameter declared in the
template-head of 
P.  Two template parameters match if they are of the same kind,
for constant template parameters, their types are
equivalent (
[temp.over.link]), and for template template parameters,
each of their corresponding template parameters matches, recursively
.  When 
P's 
template-head contains a 
template-parameter
that declares a template parameter
pack (
[temp.variadic]), the template parameter pack will match zero or more template
parameters or template parameter packs declared in the 
template-head of
A with the same type and form as the template parameter pack declared in 
P
(ignoring whether those template parameters are template parameter packs)
.