| // { dg-do run { target c++11 } } | |
| struct A {}; | |
| struct B {}; | |
| struct C {}; | |
| template<typename... Exceptions> void f(int idx) | |
| #if __cplusplus <= 201402L | |
| throw(Exceptions...) // { dg-warning "deprecated" "" { target { ! c++17 } } } | |
| #endif | |
| { | |
| 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; | |
| } |