Sourc code for t.cpp: ------------------------------------------------ struct D1 { void operator delete(void *p) throw (){} };
struct D2 { void operator delete(void *p) throw (){} }; class MD : public D1, public D2 { }; int mymain() { MD *p = new MD; /* error - ambiguous operator delete */ return 0; } ------------------------------------------------ Expected Behaviour: ------------------------------------------------ t.cpp: In function `int mymain()': t.cpp:18: request for member `operator delete' is ambiguous t.cpp:8: candidates are: static void D2::operator delete(void*) t.cpp:3: static void D1::operator delete(void*) ------------------------------------------------ Actual Behaviour: ------------------------------------------------ None. ------------------------------------------------ t.ii generated with -save-temps option ------------------------------------------------ # 1 "t.cpp" # 1 "t.cpp" # 1 "<built-in>" # 1 "<command line>" # 1 "t.cpp" struct D1 { void operator delete(void *p) throw (){} }; struct D2 { void operator delete(void *p) throw (){} }; class MD : public D1, public D2 { }; int mymain() { MD *p = new MD; return 0; } ------------------------------------------------ Release: ------------------------------------------------ GCC Version: 3.2.0 ------------------------------------------------ Environment: System Type: ------------------------------------------------ Reading specs from /usr/local/bin/../lib/gcc-lib/powerpc-ibm-aix5.1.0.0/3.2/specs Configured with: /scratch/gcc-3.2/configure --prefix=/usr/local/gcc.3.2.0 --enable-threads=aix --disable-nls Thread model: aix gcc version 3.2 /usr/local/bin/../lib/gcc-lib/powerpc-ibm-aix5.1.0.0/3.2/cpp0 -lang-c++ -D__GNUG__=3 -D__DEPRECATED -D__EXCEPTIONS -v -iprefix /usr/local/bin/../lib/gcc-lib/powerpc-ibm-aix5.1.0.0/3.2/ -D__GNUC__=3 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=0 -D__GXX_ABI_VERSION=102 -D_IBMR2 -D_POWER -D_LONG_LONG -D_AIX -D_AIX32 -D_AIX41 -D_AIX43 -D_AIX51 -Asystem=unix -Asystem=aix -D__NO_INLINE__ -D__STDC_HOSTED__=1 -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED=1 -D_LARGE_FILE_API -D_ALL_SOURCE -D__WCHAR_TYPE__=short unsigned int -D_ARCH_COM /home/msadoghi/scenario/common/t.cpp -std=iso9899:199409 t.ii GNU CPP version 3.2 (cpplib) ignoring nonexistent directory "/usr/local/lib/gcc-lib/../../powerpc-ibm-aix5.1.0.0/include" ignoring nonexistent directory "/usr/local/gcc.3.2.0/powerpc-ibm-aix5.1.0.0/include" ignoring duplicate directory "/usr/local/gcc.3.2.0/lib/gcc-lib/powerpc-ibm-aix5.1.0.0/3.2/include" #include "..." search starts here: #include <...> search starts here: /usr/local/lib/gcc-lib/powerpc-ibm-aix5.1.0.0/3.2/include /usr/local/include /usr/local/gcc.3.2.0/include /usr/include End of search list. /usr/local/bin/../lib/gcc-lib/powerpc-ibm-aix5.1.0.0/3.2/cc1plus -fpreprocessed t.ii -quiet -dumpbase t.cpp -std=iso9899:199409 -version -o t.s GNU CPP version 3.2 (cpplib) GNU C++ version 3.2 (powerpc-ibm-aix5.1.0.0) compiled by GNU C version 3.2. as -u -mcom -o t.o t.s ------------------------------------------------ How-To-Repeat: ------------------------------------------------ g++ -v -save-temps -c -std=iso9899:199409 t.cpp ------------------------------------------------ Note: ------------------------------------------------ This is a diagnostic test case. Compilation failure is expected. However the compilation is successful and no error or warning messages are produced. According to C++ ANSI Standard the test cases should produces an error. Therefore, in the strict mode compiler should produce a server error and in the extended mode it should at least produces a warning. C++ ANSI Standard: "new-expression that creates object of class type or array thereof must check ambiguity for allocation function, deallocation function, and constructor this checks access for operator delete" AIX, MACOS and LINUX all have a similar behaviors. ------------------------------------------------ -- Summary: request for member `operator delete' is ambiguous Product: gcc Version: 3.2 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: msadoghi at ca dot ibm dot com CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20041