]> git.ipfire.org Git - thirdparty/gcc.git/commit
re PR c++/35722 ([C++0x] Variadic templates expansion into non-variadic class template)
authorJason Merrill <jason@redhat.com>
Sun, 2 Oct 2011 21:45:01 +0000 (17:45 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Sun, 2 Oct 2011 21:45:01 +0000 (17:45 -0400)
commitd6027563413543e1607fdc8752e4c4f238fad350
treeb61148189571cf1915a392bca2875a7a41bc9a61
parentf10eaa2dcc0081c7abbc326b500b84e03f777d05
re PR c++/35722 ([C++0x] Variadic templates expansion into non-variadic class template)

PR c++/35722
Implement N2555 (expanding pack expansion to fixed parm list)
* pt.c (coerce_template_parms): Allow expanding a pack expansion
to a fixed-length argument list.
(unify_pack_expansion): Handle explicit args properly.
(unify) [TREE_VEC]: Handle pack expansions here.
[TYPE_ARGUMENT_PACK]: Not here.
(tsubst_pack_expansion): Don't try to do partial substitution.
(pack_deducible_p): New.
(fn_type_unification): Use it.
(find_parameter_packs_r): Take the TYPE_MAIN_VARIANT
of a type parameter.
(check_non_deducible_conversion): Split from type_unification_real.
(unify_one_argument): Split from type_unification_real...
(unify_pack_expansion): ...and here.  Drop call_args_p parm.
(type_unification_real, unify, more_specialized_fn): Adjust.

From-SVN: r179436
14 files changed:
gcc/cp/ChangeLog
gcc/cp/pt.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/variadic-explicit1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/variadic-nondeduce1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/variadic105.C
gcc/testsuite/g++.dg/cpp0x/variadic117.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/variadic118.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/variadic35.C
gcc/testsuite/g++.dg/cpp0x/variadic65.C
gcc/testsuite/g++.dg/cpp0x/variadic82.C
gcc/testsuite/g++.dg/cpp0x/variadic83.C
libstdc++-v3/ChangeLog
libstdc++-v3/testsuite/util/testsuite_tr1.h