// Contribued by Gabriel Dos Reis <gdr@codesourcery.com>
// Origin: iskey@i100.ryd.student.liu.se

class ostream;
extern ostream& cout;

template <class T> struct s;

template <class T>
ostream& operator<<(ostream &o, const typename s<T>::t &x)
{
  return o;
}

template <class T>
struct s {
  struct t
  {
    friend ostream&
    operator<<<T>(ostream&, const typename s<T>::t &);
  };
  t x;
};

int main()
{
  s<int>::t y;
  cout << y; // { dg-error "" }
}
