Index: gcc/cp/typeck.c =================================================================== --- gcc/cp/typeck.c (revision 366) +++ gcc/cp/typeck.c (working copy) @@ -1090,6 +1090,9 @@ return false; break; + case PACK_UNPACK_TYPE: + return same_type_p (PACK_UNPACK_PATTERN (t1), PACK_UNPACK_PATTERN (t2)); + default: return false; } Index: gcc/cp/pt.c =================================================================== --- gcc/cp/pt.c (revision 366) +++ gcc/cp/pt.c (working copy) @@ -4592,6 +4592,10 @@ if (TREE_CODE (nt) == TREE_VEC) /* For member templates */ return TREE_CODE (ot) == TREE_VEC && comp_template_args (ot, nt); + else if (PACK_UNPACK_P (ot)) + return PACK_UNPACK_P (nt) + && template_args_equal (PACK_UNPACK_PATTERN (ot), + PACK_UNPACK_PATTERN (nt)); else if (TYPE_P (nt)) return TYPE_P (ot) && same_type_p (ot, nt); else if (TREE_CODE (ot) == TREE_VEC || TYPE_P (ot))