1 // PR c++/16829
2 // { dg-do compile }
3
4 void f1(int = 0, int); // { dg-error "default" }
5
6 void f2(int = 0, int) {} // { dg-error "default" }
7
8 void f3(int, int);
9 void f3(int = 0, int); // { dg-error "default" }
10
11 void f4(int, int);
12 void f4(int = 0, int) {} // { dg-error "default" }
13
14 void f5();
15 void f5(int = 0, int); // { dg-error "default" }
16
17 void f6();
18 void f6(int = 0, int) {} // { dg-error "default" }
19
20 template<typename> void g1(int = 0, int); // { dg-error "default" }
21
22 template<typename> void g2(int = 0, int) {} // { dg-error "default" }
23
24 template<typename> void g3(int, int);
25 template<typename> void g3(int = 0, int); // { dg-error "default" }
26
27 template<typename> void g4(int, int);
28 template<typename> void g4(int = 0, int) {} // { dg-error "default" }
29
30 template<typename> void g5();
31 template<typename> void g5(int = 0, int); // { dg-error "default" }
32
33 template<typename> void g6();
34 template<typename> void g6(int = 0, int) {} // { dg-error "default" }
35
g7(T,T)36 template<typename T> void g7(T, T) {}
37 template<typename T> void g7(T* = 0, T*) {} // { dg-error "default" }
38
39
40 struct A
41 {
42 void F1(int = 0, int); // { dg-error "default" }
43
44 void F2(int = 0, int) {} // { dg-error "default" }
45
46 void F3(int, int);
47
48 void F4();
49 void F4(int = 0, int); // { dg-error "default" }
50
51 void F5();
52 void F5(int = 0, int) {} // { dg-error "default" }
53
54 template<typename> void G1(int = 0, int); // { dg-error "default" }
55
56 template<typename> void G2(int = 0, int) {} // { dg-error "default" }
57
58 template<typename> void G3(int, int);
59
60 template<typename> void G4();
61 template<typename> void G4(int = 0, int); // { dg-error "default" }
62
63 template<typename> void G5();
64 template<typename> void G5(int = 0, int) {} // { dg-error "default" }
65
G6A66 template<typename T> void G6(T, T) {}
67 template<typename T> void G6(T* = 0, T*) {} // { dg-error "default" }
68 };
69
70 void A::F3(int = 0, int) {} // { dg-error "default" }
71
72 template<typename> void A::G3(int = 0, int) {} // { dg-error "default" }
73
74
75 template<typename> struct B
76 {
77 void F1(int = 0, int); // { dg-error "default" }
78
79 void F2(int = 0, int) {} // { dg-error "default" }
80
81 void F3(int, int);
82
83 void F4();
84 void F4(int = 0, int); // { dg-error "default" }
85
86 void F5();
87 void F5(int = 0, int) {} // { dg-error "default" }
88
89 template<typename> void G1(int = 0, int); // { dg-error "default" }
90
91 template<typename> void G2(int = 0, int) {} // { dg-error "default" }
92
93 template<typename> void G3(int, int);
94
95 template<typename> void G4();
96 template<typename> void G4(int = 0, int); // { dg-error "default" }
97
98 template<typename> void G5();
99 template<typename> void G5(int = 0, int) {} // { dg-error "default" }
100
G6B101 template<typename T> void G6(T, T) {}
102 template<typename T> void G6(T* = 0, T*) {} // { dg-error "default" }
103 };
104
105 template<typename T>
106 void B<T>::F3(int = 0, int) {} // { dg-error "default" }
107
108 template<typename T> template<typename>
109 void B<T>::G3(int = 0, int) {} // { dg-error "default" }
110