https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65299
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- My initial reaction is that GCC and ICC/EDG are correct. Name lookup is performed for "operator++" and if a name is found in two different base classes the result is ambiguous. The different argument lists are not considered until after name lookup.