1 // PR c++/28274
2 // { dg-do compile }
3 
4 void f1(int, int, int, int, int = 0);
5 void f1(int, int, int, int = 0, int);
6 void f1(int, int, int = 0, int, int);
7 void f1(int = 0, int, int, int, int);    // { dg-error "default" }
8 
9 void f2(int, int, int, int, int = 0) {}
10 void f2(int, int, int, int = 0, int);
11 void f2(int, int, int = 0, int, int);
12 void f2(int = 0, int, int, int, int);    // { dg-error "default" }
13 
14 void f3(int, int, int, int, int = 0);
15 void f3(int, int, int, int = 0, int) {}
16 void f3(int, int, int = 0, int, int);
17 void f3(int = 0, int, int, int, int);    // { dg-error "default" }
18 
19 void f4(int, int, int, int, int = 0);
20 void f4(int, int, int, int = 0, int);
21 void f4(int, int, int = 0, int, int) {}
22 void f4(int = 0, int, int, int, int);    // { dg-error "default" }
23 
24 void f5(int, int, int, int, int = 0);
25 void f5(int, int, int, int = 0, int);
26 void f5(int, int, int = 0, int, int);
27 void f5(int = 0, int, int, int, int) {}  // { dg-error "default" }
28 
29 
30 struct A
31 {
32   void F1(int, int, int = 0);
33   void F2(int, int, int = 0);
34 };
35 
36 void A::F1(int, int = 0, int) {}
37 void A::F2(int = 0, int, int) {}  // { dg-error "default" }
38 
39 
40 template<int> struct B
41 {
42   void F1(int, int, int = 0);
43   void F2(int, int, int = 0);
44 };
45 
46 template<int N> void B<N>::F1(int, int = 0, int) {}  // { dg-error "default arguments" }
47 template<int N> void B<N>::F2(int = 0, int, int) {}  // { dg-error "default arguments|parameter 2" }
48