struct B1{
int d;
void fb(){};
};
struct B2 : B1{
using B1::d;
using B1::fb;
int d; // why this gives error?
void fb(){} // and this does not?
};
int main(){}
Это потому, что B1 :: fb ()
обрабатывается как B1 :: fb (B1 *)
и B2 :: fb ()
рассматривается как B2 :: fb (B2 *)
? То есть, помогает ли неявный параметр различать их?
$ 13.3.1 / 4-
Для введенных неконверсионных функций с помощью объявления об использовании в производный класс, функция считается быть членом производного класса для цель определения типа параметр неявного объекта.