// { dg-do run  }
// check cleanup of template temporaries
extern "C" void abort ();
extern "C" void exit (int);

int ctor = 0;
int dtor = 0;

template <class T> struct A {
	A() {ctor++;}
	A(int) {ctor++;}
	A(const A&) {ctor++;}
	~A() {dtor++;}
	operator int() {return 0;}
};

template <class T> void ff(T);

template <class T> void ff(T)
{
}

void g(int)
{
}

void f()
{
	int x;

	A<int> a1;
	A<double> a2(37);
	A<long> a3 = A<long>(47);
	A<short> a4 = 97;

	g(A<char*>());

	A<char**>();

	x ? A<char*>() : A<char*>();

	x = 47, A<double*>(), A<int>(39), A<void>(23), -17;

	while (A<short>())
		;
	for (;A<unsigned>(3);)
		;
	if (A<A<double> >())
		;

	ff(A<double>());

	throw 59;
}

int 
main()
{
	int flag = 0;

	try {
		A<unsigned long>();
		f();
	}
	catch (int) {
		A<float>(34);
		flag = 1;
	}

	if (!flag)
		abort();

	if (!ctor || ctor != dtor)
		abort();

	exit(0);
}
