using-declaration: comeau vs msvc71
От: Aznog Россия  
Дата: 08.06.05 18:03
Оценка: +1
Есть такой код:

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 по вышеописанной проблеме.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.