// { dg-do assemble  }

struct S1
{
  ~S1(int); // { dg-error "" } destructors may not have parameters
};


template <class T>
struct S2
{
  ~S2(int); // { dg-error "" } destructors may not have parameters
};


struct S3 
{
  ~S3(double) {} // { dg-error "" } destructors may not have parameters
};


template <class T>
struct S4
{
  ~S4(double) {} // { dg-error "" } destructors may not have parameters
};


struct S5
{
  ~S5(); 
};

S5::~S5(float) 
{ // { dg-error "" } destructors may not have parameters
}


template <class T>
struct S6
{
  ~S6();
};

template <class T>
S6<T>::~S6(float)
{ // { dg-error "" } destructors may not have parameters
}



