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*)
and B2::fb()
扱われているからB2::fb(B2*)
でしょうか。つまり、暗黙のパラメーターはこれらを区別するのに役立ちますか?
$13.3.1/4-
using 宣言によって派生クラスに導入された非変換関数の場合、暗黙的なオブジェクト パラメーターの型を定義する目的で、関数は派生クラスのメンバーと見なされます。