diff options
author | Larry Evans <cppljevans@suddenlink.net> | 2009-10-14 06:27:41 +0000 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2009-10-14 02:27:41 -0400 |
commit | 9524f7104acba2f1eea83467eb9e0bc974cfd4e3 (patch) | |
tree | 7c82c5648d70cb88776e3e24e05298cc808824bb /gcc | |
parent | a743523c38b1c8d30bc3d223dd88a5290d0a90cf (diff) | |
download | gcc-9524f7104acba2f1eea83467eb9e0bc974cfd4e3.zip gcc-9524f7104acba2f1eea83467eb9e0bc974cfd4e3.tar.gz gcc-9524f7104acba2f1eea83467eb9e0bc974cfd4e3.tar.bz2 |
re PR c++/40092 ([c++0x] expansion pattern fails with error about derived template instead of actual template)
PR c++/40092
* tree.c (cp_tree_equal): Add test for TEMPLATE_PARM_PARAMETER_PACK
equality.
From-SVN: r152751
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/tree.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/vt-40092.C | 21 |
4 files changed, 33 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 7765c73..06659aa 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2009-10-14 Larry Evans <cppljevans@suddenlink.net> + + PR c++/40092 + * tree.c (cp_tree_equal): Add test for TEMPLATE_PARM_PARAMETER_PACK + equality. + 2009-10-12 Jason Merrill <jason@redhat.com> PR c++/37875 diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 7676373..99ce656 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -2081,6 +2081,8 @@ cp_tree_equal (tree t1, tree t2) case TEMPLATE_PARM_INDEX: return (TEMPLATE_PARM_IDX (t1) == TEMPLATE_PARM_IDX (t2) && TEMPLATE_PARM_LEVEL (t1) == TEMPLATE_PARM_LEVEL (t2) + && (TEMPLATE_PARM_PARAMETER_PACK (t1) + == TEMPLATE_PARM_PARAMETER_PACK (t2)) && same_type_p (TREE_TYPE (TEMPLATE_PARM_DECL (t1)), TREE_TYPE (TEMPLATE_PARM_DECL (t2)))); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4895fc1..e2a9cfe 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2009-10-14 Larry Evans <cppljevans@suddenlink.net> + + * g++.dg/cpp0x/vt-40092.C: New. + 2009-10-14 Alexandre Oliva <aoliva@redhat.com> * gcc.dg/guality/pr41616-1.c: Drop -O2. diff --git a/gcc/testsuite/g++.dg/cpp0x/vt-40092.C b/gcc/testsuite/g++.dg/cpp0x/vt-40092.C new file mode 100644 index 0000000..063ed7e --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/vt-40092.C @@ -0,0 +1,21 @@ +// { dg-do "compile" } +// { dg-options "-std=c++0x" } + +template <typename... Types> struct package {}; + +template <int ArgGen> struct wrapper_gen {}; + +template <int ArgNest> struct wrapper_nest +{ + typedef wrapper_gen<ArgNest> type_nest; +}; + +template <int... ArgPack> +struct wrapper_pack +{ + typedef package<wrapper_gen <ArgPack>...> type_pack; + // incorrect error: expansion pattern 'wrapper_gen<ArgNest>' + // contains no argument packs +}; + + |