This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/24046] New: Inheriting from a base class with private scoped operator new/delete pair
- From: "richy at fatkid dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 23 Sep 2005 22:01:26 -0000
- Subject: [Bug c++/24046] New: Inheriting from a base class with private scoped operator new/delete pair
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
There is a gcc 2.95.3 compiler bug where inheriting from a base class with a
private 'operator delete' (and its matching partner 'operator new') complains
and bails. Privitizing class specific operator new/delete pair is a common idom
to prevent freestore allocation. This is fixed in later version of gcc.
1 #include <sys/types.h>
2
3 class Base
4 {
5 public:
6 Base() {}
7 ~Base() {}
8 private:
9 // Prevent allocation on freestore -- privitize op new/delete
10 static void* operator new (size_t size);
11 static void operator delete(void*);
12 };
13
14 class Derived : public Base
15 {
16 public:
17 Derived() {}
18 ~Derived() {}
19 };
% gcc -save-temps -Wall baseopdelete.cpp
baseopdelete.cpp: In method `Derived::~Derived()':
baseopdelete.cpp:11: `static void Base::operator delete(void *)' is private
baseopdelete.cpp:18: within this context
--
Summary: Inheriting from a base class with private scoped
operator new/delete pair
Product: gcc
Version: 2.95.3
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: richy at fatkid dot org
CC: gcc-bugs at gcc dot gnu dot org
GCC host triplet: Linux 2.4.29
GCC target triplet: 2.95.3
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24046