This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/20570] New: g++ reports superfluous warning for non-virtual/protected base destructor
- From: "gcc at cohi dot at" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 20 Mar 2005 17:44:31 -0000
- Subject: [Bug c++/20570] New: g++ reports superfluous warning for non-virtual/protected base destructor
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
The warning:
t.cc:2: warning: `class A' has virtual functions but non-virtual destructor
when compiling this code with "-Wall"
struct A
{
virtual void test() = 0;
protected:
~A() {}
};
is superfluous:
Yes, A is obviously intended as base class for polymorphic usage since it has virtual functions.
But in this case both a public/virtual or protected/non-virtual destructor suffice; in the second case
there is no problem with polymorphic destruction, the case that would require a virtual destructor to
work correctly, since it is forbidden [to any "outsiders", i.e. all code that is not part of a class derived
from A, which is ok for the general case].
Please consider updating the rule for the warning to be
"Warn if the destructor of an 'obvious' base class is neither virtual nor protected".
--
Summary: g++ reports superfluous warning for non-
virtual/protected base destructor
Product: gcc
Version: 3.4.3
Status: UNCONFIRMED
Severity: enhancement
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: gcc at cohi dot at
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: any
GCC host triplet: any
GCC target triplet: any
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20570