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