Компиляция следующего примера:
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 недоступна, но я использую , используя
ключевое слово. Разве это не допустить доступа к функции FOO?
Что такое соответствующие абзацы в стандарте, которые предотвращают компиляцию вышеупомянутого?