// { dg-do run  }
// check EH with templates
extern "C" void abort ();
extern "C" void exit (int);

template <class T, int n, class U> struct A {
	A() {}
	A(const char*) {}
};

void f1()
{
	throw *(new A<double, 47, A<int, 37, short> >);
}

void f2()
{
	throw *(new A<double, 47, A<int, 36, short> >);
}

void f3()
{
	throw A<double, 47, A<int, 37, short> > ("howdy");
}

void f4()
{
	throw A<double, 47, A<int, 36, short> > ("hi michey");
}

int main()
{
	int flag;

	flag = 0;
	try {
		f1();
	}
	catch (A<double, 47, A<int, 36, short> >) {
		abort();
	}
	catch (A<double, 47, A<int, 37, short> >) {
		flag = 1;
	}
	if (!flag)
		abort();

	flag = 0;
	try {
		f2();
	}
	catch (A<double, 47, A<int, 36, short&> >) {
		abort();
	}
	catch (A<double, 47, A<int, 36, short> >) {
		flag = 1;
	}
	if (!flag)
		abort();

	flag = 0;
	try {
		f3();
	}
	catch (A<double, 47, A<int, 36, short> >) {
		abort();
	}
	catch (A<double, 47, A<int, 37, short> >) {
		flag = 1;
	}
	if (!flag)
		abort();

	flag = 0;
	try {
		f4();
	}
	catch (A<double, 47, A<int, 36, short&> >) {
		abort();
	}
	catch (A<double, 47, A<int, 36, short> >) {
		flag = 1;
	}
	if (!flag)
		abort();

	exit(0);
}
