Указатель на функцию элемента в недоступной основе

Компиляция следующего примера:

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?

Что такое соответствующие абзацы в стандарте, которые предотвращают компиляцию вышеупомянутого?

11
задан curiousguy 24 December 2011 в 04:07
поделиться