// Test whether exception specifier dependent on template parameter // is accepted during template decl processing. // { dg-do run } extern "C" void abort(); class A {}; template struct B { typedef A E; }; template struct C { typedef B D; typedef typename D::E E; void f() throw(E) { throw E(); } }; int main() { int caught = 0; try { C x; x.f(); } catch (A) { ++caught; } if (caught != 1) abort (); return 0; }