Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/warn/Wnvdtor-2.C @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// PR c++/7302 // { dg-do compile } // { dg-options "-Wnon-virtual-dtor" } // Warn when a class has virtual functions and accessible non-virtual // destructor, in which case it would be possible but unsafe to delete // an instance of a derived class through a pointer to the base class. struct A { protected: ~A(); // inaccessible - no warning public: virtual void f() = 0; }; struct B { private: ~B(); // inaccessible - no warning public: virtual void f() = 0; }; struct C // { dg-warning "non-virtual destructor" } { virtual void f() = 0; }; struct D // { dg-warning "non-virtual destructor" } { ~D(); virtual void f() = 0; }; struct E; struct F // { dg-warning "non-virtual destructor" } { protected: friend class E; ~F(); public: virtual void f() = 0; }; struct G // { dg-warning "non-virtual destructor" } { private: friend class E; ~G(); public: virtual void f() = 0; }; struct H {}; struct I1 : H {}; struct I2 : private H {}; struct J1 : H { virtual ~J1 ();}; struct J2 : private H { virtual ~J2 ();}; struct K // { dg-warning "accessible non-virtual destructor" } { virtual void k (); }; struct L1 : K // { dg-warning "accessible non-virtual destructor" } {virtual ~L1 ();}; struct L2 : private K {virtual ~L2 ();};