145
|
1 // PR c++/86476 - noexcept-specifier is a complete-class context
|
|
2 // { dg-do compile { target c++11 } }
|
|
3
|
|
4 int fn1 ();
|
|
5 int fn2 () noexcept;
|
|
6 int fn3 () noexcept;
|
|
7
|
|
8 void g() noexcept(noexcept (fn2()));
|
|
9
|
|
10 struct S1 {
|
|
11 friend void g1() noexcept(noexcept(fn2()));
|
|
12 friend void g1() noexcept(noexcept(fn1())); // { dg-error "different exception specifier" }
|
|
13 };
|
|
14
|
|
15 struct S2 {
|
|
16 friend void g2() noexcept(noexcept(fn1()));
|
|
17 friend void g2() noexcept(noexcept(fn1()));
|
|
18 friend void g2() noexcept(noexcept(fn1()));
|
|
19 };
|
|
20
|
|
21 struct S3 {
|
|
22 friend void g3() noexcept(noexcept(fn1()));
|
|
23 friend void g3() noexcept(noexcept(fn3())); // { dg-error "different exception specifier" }
|
|
24 };
|
|
25
|
|
26 struct S4 {
|
|
27 friend void g4() noexcept(noexcept(fn2()));
|
|
28 friend void g4() noexcept(noexcept(fn3()));
|
|
29 };
|
|
30
|
|
31 struct S5 {
|
|
32 friend void g() noexcept(noexcept(fn3()));
|
|
33 };
|
|
34
|
|
35 struct S6 {
|
|
36 friend void g() noexcept(noexcept(fn1())); // { dg-error "different exception specifier" }
|
|
37 };
|
|
38
|
|
39 struct S7 {
|
|
40 friend void gg() noexcept(noexcept(fn3()));
|
|
41 };
|
|
42
|
|
43 void gg() noexcept(noexcept(fn1())); // { dg-error "different exception specifier" }
|
|
44
|
|
45 struct S8 {
|
|
46 friend void g8();
|
|
47 friend void g8() noexcept(noexcept(fn2())); // { dg-error "different exception specifier" }
|
|
48 };
|
|
49
|
|
50 struct S9 {
|
|
51 friend void g9();
|
|
52 friend void g9() noexcept(noexcept(fn1()));
|
|
53 };
|
|
54
|
|
55 struct S10 {
|
|
56 friend void g10() noexcept(noexcept(fn1()));
|
|
57 friend void g10();
|
|
58 };
|
|
59
|
|
60 struct S11 {
|
|
61 friend void g11() noexcept(noexcept(fn2()));
|
|
62 friend void g11(); // { dg-error "different exception specifier" }
|
|
63 };
|
|
64
|
|
65 struct S12 {
|
|
66 friend void g12() noexcept(false);
|
|
67 friend void g12() noexcept(noexcept(fn2())); // { dg-error "different exception specifier" }
|
|
68 };
|
|
69
|
|
70 struct S13 {
|
|
71 friend void g13() noexcept(false);
|
|
72 friend void g13() noexcept(noexcept(fn1()));
|
|
73 };
|
|
74
|
|
75 struct S14 {
|
|
76 friend void g14() noexcept(noexcept(fn1()));
|
|
77 friend void g14() noexcept(false);
|
|
78 };
|
|
79
|
|
80 struct S15 {
|
|
81 friend void g15() noexcept(noexcept(fn2()));
|
|
82 friend void g15() noexcept(false); // { dg-error "different exception specifier" }
|
|
83 };
|