1 // { dg-do compile { target c++11 } } 2 3 template<typename Fun, typename... Args> // { dg-error "template parameter" } 4 struct call; 5 6 template<typename Fun, typename Arg0> 7 struct call // { dg-message "note: redeclared here" } 8 { 9 template<typename Sig> 10 struct result; 11 12 template<typename X, typename Y> 13 struct result<X(Y)> 14 { 15 typedef X type; 16 }; 17 }; 18 19 20 template<typename Fun, int... N> // { dg-error "template parameter" } 21 struct call2; 22 23 template<typename Fun, int N> 24 struct call2 // { dg-message "note: redeclared here" } 25 { 26 template<typename Sig> 27 struct result; 28 29 template<typename X, typename Y> 30 struct result<X(Y)> 31 { 32 typedef X type; 33 }; 34 }; 35 36 template<typename Fun, template<typename> class... TT> // { dg-error "template parameter" } 37 struct call3; 38 39 template<typename Fun, template<typename> class TT> 40 struct call3 // { dg-message "note: redeclared here" } 41 { 42 template<typename Sig> 43 struct result; 44 45 template<typename X, typename Y> 46 struct result<X(Y)> 47 { 48 typedef X type; 49 }; 50 }; 51