http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53398
--- Comment #3 from Roman Wieczorek <sweetrommie at gmail dot com> 2012-05-23 08:11:43 UTC --- Just to clarify, the exact way msc places methods in vtable is: Grouping the overloaded methods. Placing them in reverted order in starting where first of those overload group occur. So the gcc header for the example i showed is: class A { virutal void overl(char *c) = 0; virutal void overl(double d) = 0; virutal void overl(int i) = 0; virutal void overl(void) = 0; virutal void fun1(void) = 0; virutal void fun2(void) = 0; }; And the independent one: class A { virutal void overlC(char *c) = 0; virutal void overlD(double d) = 0; virutal void overlI(int i) = 0; virutal void overlV(void) = 0; virutal void fun1(void) = 0; virutal void fun2(void) = 0; };