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