次のコードに絞り込んだ問題があります。
class A
{
};
class B : private A
{
};
void f(A*)
{
}
void f(void*)
{
}
int main()
{
B b;
f(&b);
}
gcc 4.7 で次のエラーが発生します。
error: ‘A’ is an inaccessible base of ‘B’
A にアクセスできないことはわかっていますが、コンパイラで f(void*) を呼び出してほしかったと思います。この動作は正常ですか、それとも何か間違っていますか? それともコンパイラのバグですか?