// { dg-do compile { target c++11 } } // { dg-prune-output "note" } // PR c++/33509 template<int M, int N> struct pair { int i, j; pair() : i(M), j(N) {} }; template<int... M> struct S { template<int... N> static int foo() throw (pair <M, N>...) // { dg-error "mismatched" "" { target { ! c++17 } } } { // { dg-error "dynamic exception specification" "" { target c++17 } .-1 } return 1; // { dg-warning "deprecated" "" { target { ! c++17 } } .-2 } } }; int bar () { return S<0, 1, 2>::foo<0, 1, 3> (); } int wibble() { return S<0, 1, 2>::foo<0, 1> (); // { dg-error "no matching" "" { target { ! c++17 } } } }