* pt.c (tsubst, case TYPENAME_TYPE): Check TYPE_BEING_DEFINED
before calling complete_type_or_else.
From-SVN: r24958
+1999-02-01 Mark Mitchell <mark@markmitchell.com>
+
+ * pt.c (tsubst, case TYPENAME_TYPE): Check TYPE_BEING_DEFINED
+ before calling complete_type_or_else.
+
Mon Feb 1 09:49:52 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* input.c (inline): Don't define, its handled by system.h.
But, such constructs have already been resolved by this
point, so here CTX really should have complete type, unless
it's a partial instantiation. */
- if (!uses_template_parms (ctx)
+ if (!uses_template_parms (ctx)
+ && !TYPE_BEING_DEFINED (ctx)
&& !complete_type_or_else (ctx))
return error_mark_node;
--- /dev/null
+// Build don't link:
+
+template <class T>
+struct S1 {
+ friend bool f<>(const S1&);
+ typedef T X;
+};
+
+template <class T>
+struct S2 {
+};
+
+template <class T>
+struct S2<S1<T> > {
+ typedef typename S1<T>::X Y;
+};
+
+template <class T>
+bool f(T);
+
+template <class T>
+typename S2<S1<T> >::Y
+f(const S1<T>&);
+
+template struct S1<int>;