// { dg-do assemble  }
// spurious 'const' in error.
// For egcs-2.91.34, the warning message refers to
// class ostream & operator <<(class ostream &, const class Vector<T> &)
// Also, the template instantiation does not provide the missing
// friend function, the non-template function does

#include <cstdio>
#include <cstdlib>
#include <iostream>

using namespace std;

template <class T>
class Vector
{
  friend ostream& operator<< (ostream& out, const Vector<T> & vec); // { dg-warning "" } 
};

template <class T>
ostream& operator<< (ostream& out,  const Vector<T> & vec)
{
  abort();  // this should not be called
}

template class Vector<char>;
template ostream& operator<< (ostream& out,  const Vector<char> &);

ostream& operator<< (ostream& out, const Vector<char>&)
{
  return out;
}

int main()
{
  Vector<char> vc;
  cout << vc;
}
