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