// { 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; }