https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65299
Bug ID: 65299 Summary: Inheriting from two classes with increment operators Product: gcc Version: 4.8.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: ieee at bk dot ru Created attachment 34936 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34936&action=edit preprocessed file This program does not compile. class A { public: A& operator++(){return *this;} }; class B { public: B operator++(int){return *this;} }; class C:public A, public B { }; int main() { C c; c++; ++c; } >g++ bug.cpp -save-temps bug.cpp: In function 'int main()': bug.cpp:20:6: error: request for member 'operator++' is ambiguous c++; ^ bug.cpp:10:7: note: candidates are: B B::operator++(int) B operator++(int){return *this;} ^ bug.cpp:4:8: note: A& A::operator++() A& operator++(){return *this;} ^ bug.cpp:21:7: error: request for member 'operator++' is ambiguous ++c; ^ bug.cpp:10:7: note: candidates are: B B::operator++(int) B operator++(int){return *this;} ^ bug.cpp:4:8: note: A& A::operator++() A& operator++(){return *this;} ^ The calls are not really ambiguous because the operators are different, post and pre increment. The same error occures when using decrement operators. Clang, ICC and VC++ accept this code. I've tried different versions of gcc, from 4.4.7 to 4.9.2 with the same result. gcc -v output: Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/i586-mageia-linux-gnu/4.8.2/lto-wrapper Target: i586-mageia-linux-gnu Configured with: ../configure --prefix=/usr --libexecdir=/usr/lib --with-slibdir=/lib --with-bugurl=http://bugs.mageia.org/ --mandir=/usr/share/man --infodir=/usr/share/info --enable-checking=release --enable-languages=c,c++,ada,fortran,objc,obj-c++,java --enable-linker-build-id --build=i586-mageia-linux-gnu --host=i586-mageia-linux-gnu --with-cpu=generic --with-system-zlib --enable-threads=posix --enable-shared --enable-objc-gc --enable-long-long --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --enable-java-awt=gtk --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-gtk-cairo --disable-libjava-multilib --enable-ssp --disable-libssp --disable-werror --with-ppl --with-cloog --with-python-dir=/lib/python2.7/site-packages --enable-lto Thread model: posix gcc version 4.8.2 (GCC)