re PR c++/45236 ([C++0x] Can't access nested type of a partial class specialization involving variadic parameters)

PR c++/45236
	* pt.c (lookup_template_class): Don't re-coerce outer parms.

From-SVN: r163042
This commit is contained in:
Jason Merrill 2010-08-09 17:13:12 -04:00 committed by Jason Merrill
parent ee24763610
commit 7a25d520c2
4 changed files with 36 additions and 5 deletions

View File

@ -1,3 +1,8 @@
2010-08-09 Jason Merrill <jason@redhat.com>
PR c++/45236
* pt.c (lookup_template_class): Don't re-coerce outer parms.
2010-08-09 Nathan Froyd <froydnj@codesourcery.com>
* call.c (add_builtin_candidates): Use VECs for local variable

View File

@ -6540,11 +6540,16 @@ lookup_template_class (tree d1,
i > 0 && t != NULL_TREE;
--i, t = TREE_CHAIN (t))
{
tree a = coerce_template_parms (TREE_VALUE (t),
arglist, gen_tmpl,
complain,
/*require_all_args=*/true,
/*use_default_args=*/true);
tree a;
if (i == saved_depth)
a = coerce_template_parms (TREE_VALUE (t),
arglist, gen_tmpl,
complain,
/*require_all_args=*/true,
/*use_default_args=*/true);
else
/* Outer levels should have already been coerced. */
a = TMPL_ARGS_LEVEL (arglist, i);
/* Don't process further if one of the levels fails. */
if (a == error_mark_node)

View File

@ -1,3 +1,8 @@
2010-08-09 Jason Merrill <jason@redhat.com>
PR c++/45236
* g++.dg/cpp0x/variadic-104.C: New.
2010-08-09 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/44235

View File

@ -0,0 +1,16 @@
// PR c++/45236
// { dg-options -std=c++0x }
template <class T, class S> class foo;
template<template<int...> class C, int... II, class S>
struct foo<C<II...>,S>
{
template <class U>
struct bar { typedef int type; };
};
template <int... I>
struct A {};
foo<A<3>, float>::bar<int> x;