Within a template parameter list, a non-type template parameter pack is
represented as a PARM_DECL. But in a couple of spots where we need to
deduce and create an empty argument pack, we test for TEMPLATE_PARM_INDEX
(within a template parameter list) instead of for PARM_DECL, and so we
end up creating a TYPE_ARGUMENT_PACK even in the non-type case. This
patch fixes this (seemingly harmless) bug.
gcc/cp/ChangeLog:
* pt.cc (type_unification_real): Test for PARM_DECL instead
of TEMPLATE_PARM_INDEX to distinguish a type vs non-type
template parameter pack.
(type_targs_deducible_from): Likewise.
{
tree arg;
- if (TREE_CODE (tparm) == TEMPLATE_PARM_INDEX)
+ if (TREE_CODE (tparm) == PARM_DECL)
{
arg = make_node (NONTYPE_ARGUMENT_PACK);
TREE_CONSTANT (arg) = 1;
if (template_parameter_pack_p (tparm))
{
tree arg;
- if (TREE_CODE (tparm) == TEMPLATE_PARM_INDEX)
+ if (TREE_CODE (tparm) == PARM_DECL)
{
arg = make_node (NONTYPE_ARGUMENT_PACK);
TREE_CONSTANT (arg) = 1;