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:
parent
82b1c550ee
commit
3f91db69ca
|
@ -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>
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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;
|
Loading…
Reference in New Issue