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
This commit is contained in:
parent
9949572916
commit
6150b60261
|
@ -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>
|
2006-06-25 Lee Millward <lee.millward@gmail.com>
|
||||||
Mark Mitchell <mark@codesuorcery.com>
|
Mark Mitchell <mark@codesuorcery.com>
|
||||||
|
|
||||||
|
|
|
@ -3837,11 +3837,8 @@ convert_template_argument (tree parm,
|
||||||
tree in_decl)
|
tree in_decl)
|
||||||
{
|
{
|
||||||
tree val;
|
tree val;
|
||||||
tree inner_args;
|
|
||||||
int is_type, requires_type, is_tmpl_type, requires_tmpl_type;
|
int is_type, requires_type, is_tmpl_type, requires_tmpl_type;
|
||||||
|
|
||||||
inner_args = INNERMOST_TEMPLATE_ARGS (args);
|
|
||||||
|
|
||||||
if (TREE_CODE (arg) == TREE_LIST
|
if (TREE_CODE (arg) == TREE_LIST
|
||||||
&& TREE_CODE (TREE_VALUE (arg)) == OFFSET_REF)
|
&& TREE_CODE (TREE_VALUE (arg)) == OFFSET_REF)
|
||||||
{
|
{
|
||||||
|
@ -3933,7 +3930,7 @@ convert_template_argument (tree parm,
|
||||||
|
|
||||||
if (coerce_template_template_parms (parmparm, argparm,
|
if (coerce_template_template_parms (parmparm, argparm,
|
||||||
complain, in_decl,
|
complain, in_decl,
|
||||||
inner_args))
|
args))
|
||||||
{
|
{
|
||||||
val = arg;
|
val = arg;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
Loading…
Reference in New Issue