]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/g++.dg/cpp1y/pr79393-3.C
23dc265090097ba07764028407948bbc0eda033f
[thirdparty/gcc.git] / gcc / testsuite / g++.dg / cpp1y / pr79393-3.C
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 () {
21 throw 1; // { dg-warning "will always call terminate" }
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 }