diff options
author | Jason Merrill <jason@redhat.com> | 2013-03-29 18:59:35 +0000 |
---|---|---|
committer | Jason Merrill <jason@redhat.com> | 2013-03-29 18:59:35 +0000 |
commit | ab701187c84de46ed2e95b685445830a779ed601 (patch) | |
tree | 8dba1dcfdf455912f38237e553266f2e0ec1c02d | |
parent | 6bb0ae7f079c64d75fe22a42e3e6f13dc99aa792 (diff) |
PR c++/56774
PR c++/35722
* pt.c (unify_pack_expansion): Fix indexing.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@197246 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/pt.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/variadic-explicit2.C | 14 |
3 files changed, 22 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index b22536262b6..58c2b149c20 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2013-03-29 Jason Merrill <jason@redhat.com> + + PR c++/56774 + PR c++/35722 + * pt.c (unify_pack_expansion): Fix indexing. + 2013-03-23 Jason Merrill <jason@redhat.com> PR c++/54277 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index d8b77ad0fed..783a8ee54c3 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -15727,10 +15727,10 @@ unify_pack_expansion (tree tparms, tree targs, tree packed_parms, arg = NULL_TREE; if (TREE_VALUE (pack) && (pargs = ARGUMENT_PACK_EXPLICIT_ARGS (TREE_VALUE (pack))) - && (i < TREE_VEC_LENGTH (pargs))) + && (i - start < TREE_VEC_LENGTH (pargs))) { any_explicit = true; - arg = TREE_VEC_ELT (pargs, i); + arg = TREE_VEC_ELT (pargs, i - start); } TMPL_ARG (targs, level, idx) = arg; } diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-explicit2.C b/gcc/testsuite/g++.dg/cpp0x/variadic-explicit2.C new file mode 100644 index 00000000000..4a80745293a --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/variadic-explicit2.C @@ -0,0 +1,14 @@ +// PR c++/56774 +// { dg-require-effective-target c++11 } + +template <class ... Args> +struct mytype {}; + +template <class T, class ... Args> +void something( mytype<T, Args...> ) +{ } + +int main() +{ + something<int, char, bool>( mytype<int, char, bool>() ); +} |