]>
Commit | Line | Data |
---|---|---|
2bd652d2 NS |
1 | // pr c++/79393 |
2 | // { dg-do compile { target c++14 } } | |
3 | ||
4 | struct A | |
5 | { | |
6 | friend class C; | |
7 | private: | |
8 | ~A () noexcept (false); | |
9 | }; | |
10 | ||
11 | A::~A () noexcept(false) {} | |
12 | ||
13 | struct B : virtual A | |
14 | { | |
15 | // non-virtual, abstract, ignores A | |
16 | ~B (); | |
17 | virtual void abs () = 0; | |
18 | }; | |
19 | ||
20 | B::~B () { | |
a9c697b8 | 21 | throw 1; // { dg-warning "will always call 'terminate'" } |
2bd652d2 NS |
22 | } |
23 | ||
24 | struct C : virtual A | |
25 | { | |
26 | // non-virtual, non-abstract, considers A | |
27 | ~C (); | |
28 | virtual void abs (); | |
29 | }; | |
30 | ||
31 | C::~C () { | |
32 | throw 1; | |
33 | } | |
34 | ||
35 | struct D : virtual A | |
36 | { | |
37 | // virtual, abstract, considers A | |
38 | virtual ~D (); | |
39 | virtual void abs () = 0; | |
40 | }; | |
41 | ||
42 | D::~D () { | |
43 | throw 1; | |
44 | } |