下一个例子的编译:
class A
{
public:
void foo()
{
}
};
class B : private A
{
public:
using A::foo;
};
int main()
{
typedef void (B::*mf)();
mf func = &B::foo;
B b;
(b.*func)();
}
失败并出现下一个错误:
main.cpp||In function ‘int main()’:
main.cpp|18|error: ‘A’ is an inaccessible base of ‘B’
main.cpp|18|error: in pointer to member function conversion
我知道 A 不是 B 的可访问基础,但我正在使用using
关键字。它不应该允许访问函数 foo 吗?
标准中的哪些相关段落阻止了上述内容的编译?