re PR c++/70141 (template parameter not deducible in partial specialization of template inside template)

PR c++/70141
	* pt.c (for_each_template_parm_r): Always walk into TYPENAME_TYPE.

From-SVN: r234228
This commit is contained in:
Jason Merrill 2016-03-15 15:21:44 -04:00 committed by Jason Merrill
parent 82b1c550ee
commit 3f91db69ca
3 changed files with 34 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2016-03-15 Jason Merrill <jason@redhat.com>
PR c++/70141
* pt.c (for_each_template_parm_r): Always walk into TYPENAME_TYPE.
2016-03-14 Casey Carter <casey@carter.net>
Jason Merrill <jason@redhat.com>

View File

@ -8851,8 +8851,9 @@ for_each_template_parm_r (tree *tp, int *walk_subtrees, void *d)
break;
case TYPENAME_TYPE:
if (!fn)
WALK_SUBTREE (TYPENAME_TYPE_FULLNAME (t));
/* A template-id in a TYPENAME_TYPE might be a deduced context after
partial instantiation. */
WALK_SUBTREE (TYPENAME_TYPE_FULLNAME (t));
break;
case CONSTRUCTOR:

View File

@ -0,0 +1,26 @@
// PR c++/70141
template <typename T>
struct outer
{
template <typename U>
struct inner
{
};
};
template <typename T>
struct is_inner_for
{
template <typename Whatever>
struct predicate;
template <typename U>
struct predicate<typename outer<T>::template inner<U> >
{
};
};
is_inner_for<int>::predicate<outer<int>::inner<double> > p;