Вы получаете тот же результат с этой упрощенной версией:
int foo() ;
int foo() ; // OK -- extern functions may be declared more than once
class C {
int foo() ;
int foo() ; // Error -- member function may not be declared more than once
} ;
Возможно, причина в том, что многие C
коды использовали переопределение функций extern
, поэтому их нужно было разрешить.