* pt.c (for_each_template_parm_r): Always walk into TYPENAME_TYPE.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@234228
138bc75d-0d04-0410-961f-
82ee72b054a4
+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>
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:
--- /dev/null
+// 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;