Index: gcc/testsuite/g++.dg/template/variadic58.C =================================================================== --- gcc/testsuite/g++.dg/template/variadic58.C (revision 0) +++ gcc/testsuite/g++.dg/template/variadic58.C (revision 0) @@ -0,0 +1,15 @@ +#include + +template +void foo(Args...) { } + +template +void bar(Args... args) { + foo(Args()...); + foo(args = args...); + foo(reinterpret_cast(&args)...); + foo(const_cast(args)...); + foo(static_cast(&args)...); + foo(dynamic_cast(&args)...); + foo(typeid(Args)...); +} Index: gcc/cp/pt.c =================================================================== --- gcc/cp/pt.c (revision 367) +++ gcc/cp/pt.c (working copy) @@ -2389,6 +2389,19 @@ *walk_subtrees = 0; return NULL_TREE; + case CAST_EXPR: + if (TREE_TYPE (t)) + walk_tree (&TREE_TYPE (t), &find_parameter_packs_r, ppd, ppd->visited); + + { + int i; + for (i = 0; i < TREE_CODE_LENGTH (TREE_CODE (t)); ++i) + walk_tree (&TREE_OPERAND (t, i), &find_parameter_packs_r, + ppd, ppd->visited); + } + *walk_subtrees = 0; + return NULL_TREE; + default: return NULL_TREE; }