Есть такой код:
class Base
{
public:
void MethodA() {}
void MethodB() {}
};
class BaseWrapper: public Base
{
private:
using Base::MethodA;
};
class SomeImpl: private BaseWrapper
{
public:
void MethodA() { BaseWrapper::MethodA(); }
void MethodB() { BaseWrapper::MethodB(); }
};
int main()
{
SomeImpl v;
v.MethodA();
v.MethodB();
return 0;
}
При компиляции MSVC 7.1 в строке "void MethodA() { BaseWrapper::MethodA(); }" имеет место ошибка "... error C2248: 'BaseWrapper::MethodA' : cannot access private member declared in class 'BaseWrapper'"
Компиляция этого же кода с помощью Comeau C/C++ 4.3.3 (online) выполняется без ошибок.
Стандарт по поводу using-declaration в 7.3.3/15 говорит: "The alias created by the using-declaration has the usual accessibility for a member-declaration" (что в моем понимании означает, что уровень доступа к using-объявлению в классе определяется так же, как и для объявления члена класса, т.е. по private/protected/public).
Из этого делаю вывод, что ошибается в данном случае Comeau, однако, возможно, я что-то упустил. Поэтому хочу узнать мнение многоуважаемого All по вышеописанной проблеме.