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