aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2006-06-28 21:27:17 -0400
committerJason Merrill <jason@gcc.gnu.org>2006-06-28 21:27:17 -0400
commit6150b6026194c4ed9003f788ced0c16b18c5c567 (patch)
tree5bc7479a0d5d63b578fd46abb4ba0da9d84411b2
parent9949572916f27c168ed85ec83ab9924a50c53538 (diff)
downloadgcc-6150b6026194c4ed9003f788ced0c16b18c5c567.zip
gcc-6150b6026194c4ed9003f788ced0c16b18c5c567.tar.gz
gcc-6150b6026194c4ed9003f788ced0c16b18c5c567.tar.bz2
re PR c++/27424 (Valid template-template-parameter rejected)
PR c++/27424 * pt.c (convert_template_argument): Pass all template arguments on to coerce_template_template_parms. From-SVN: r115063
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/pt.c5
-rw-r--r--gcc/testsuite/g++.dg/template/ttp20.C11
3 files changed, 18 insertions, 4 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index e68602f..1557a76 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2006-06-28 Jason Merrill <jason@redhat.com>
+
+ PR c++/27424
+ * pt.c (convert_template_argument): Pass all template arguments
+ on to coerce_template_template_parms.
+
2006-06-25 Lee Millward <lee.millward@gmail.com>
Mark Mitchell <mark@codesuorcery.com>
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 89afb5f..a81f6a0 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -3837,11 +3837,8 @@ convert_template_argument (tree parm,
tree in_decl)
{
tree val;
- tree inner_args;
int is_type, requires_type, is_tmpl_type, requires_tmpl_type;
- inner_args = INNERMOST_TEMPLATE_ARGS (args);
-
if (TREE_CODE (arg) == TREE_LIST
&& TREE_CODE (TREE_VALUE (arg)) == OFFSET_REF)
{
@@ -3933,7 +3930,7 @@ convert_template_argument (tree parm,
if (coerce_template_template_parms (parmparm, argparm,
complain, in_decl,
- inner_args))
+ args))
{
val = arg;
diff --git a/gcc/testsuite/g++.dg/template/ttp20.C b/gcc/testsuite/g++.dg/template/ttp20.C
new file mode 100644
index 0000000..0d1784c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/ttp20.C
@@ -0,0 +1,11 @@
+// PR c++/27424
+// Bug: failing to substitute the 'int' into C
+
+template<typename T> struct A
+{
+ template<template<T> class> struct B {};
+ template<T> struct C;
+ B<C> b;
+};
+
+A<int> a;