@@ -8334,20 +8371,30 @@ tsubst_template_args (tree t, tree args, tsubst_flags_t complain, tree in_decl)
tree new_arg;
if (TREE_CODE (orig_arg) == TREE_VEC)
- new_arg = tsubst_template_args (orig_arg, args, complain, in_decl);
+ {
+ new_arg = tsubst_template_args (orig_arg, args, complain, in_decl);
+ non_default_args_count =
+ GET_NON_DEFAULT_TEMPLATE_ARGS_COUNT (orig_arg);
+ }
else if (PACK_EXPANSION_P (orig_arg))
{
/* Substitute into an expansion expression. */
new_arg = tsubst_pack_expansion (orig_arg, args, complain, in_decl);
+ if (non_default_args_count < 0 && new_arg != error_mark_node)
+ non_default_args_count =
+ GET_NON_DEFAULT_TEMPLATE_ARGS_COUNT (orig_t);
...