http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52103
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-02-03 10:13:55 UTC --- You can use C++11 explicit override control: struct B { virtual void f(int); }; struct D : B { void f(long) override; // error: doesn't override anything void f(int) override; // ok }; This is implemented in G++ 4.7.0