34 lines
491 B
C
34 lines
491 B
C
// { dg-do "run" }
|
|
// { dg-options "-std=gnu++0x" }
|
|
struct A {};
|
|
struct B {};
|
|
struct C {};
|
|
|
|
template<typename... Exceptions> void f(int idx) throw(Exceptions...) {
|
|
if (idx == 0) throw A();
|
|
else if (idx == 1) throw B();
|
|
else if (idx == 2) throw C();
|
|
}
|
|
|
|
extern "C" void abort();
|
|
|
|
int main()
|
|
{
|
|
try {
|
|
f<A, B, C>(0);
|
|
abort();
|
|
} catch (A) {
|
|
}
|
|
try {
|
|
f<A, B, C>(1);
|
|
abort();
|
|
} catch (B) {
|
|
}
|
|
try {
|
|
f<A, B, C>(2);
|
|
abort();
|
|
} catch (C) {
|
|
}
|
|
return 0;
|
|
}
|