// { dg-do assemble  }

struct A 
{
  void f() {}

  template <class U>
  void f() {}
};


template <class T>
struct B
{
  void f() {}

  template <class U>
  void f() {}
};

template struct B<int>;

struct C 
{
  template <class U>
  void f() {}  // { dg-error "with" } redeclaration

  template <class U>
  void f() {}  // { dg-error "overloaded" } redeclaration
};


template <class T, class U>
struct D
{
  void f(T);
  void f(U);
};

template struct D<int, double>;

template <class T, class U>
struct D2
{
  void f(T); // { dg-error "with" } redeclaration 
  void f(U); // { dg-error "overloaded" } redeclaration 
};

template struct D2<int, int>; 

struct E
{
  void f();  // { dg-error "with" } redeclaration
  void f(); // { dg-error "overloaded" } redeclaration
};

