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 по вышеописанной проблеме.
Re: using-declaration: comeau vs msvc71
От: korzhik Россия  
Дата: 08.06.05 19:16
Оценка:
Здравствуйте, Aznog, Вы писали:

A>Есть такой код:


код поскипал

A>При компиляции MSVC 7.1 в строке "void MethodA() { BaseWrapper::MethodA(); }" имеет место ошибка "... error C2248: 'BaseWrapper::MethodA' : cannot access private member declared in class 'BaseWrapper'"

A>Компиляция этого же кода с помощью Comeau C/C++ 4.3.3 (online) выполняется без ошибок.

A>Стандарт по поводу 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).


A>Из этого делаю вывод, что ошибается в данном случае Comeau, однако, возможно, я что-то упустил. Поэтому хочу узнать мнение многоуважаемого All по вышеописанной проблеме.


Как я понял вопрос открытый Issue 360
Вот ещё можешь почитать http://www.open-std.org/JTC1/SC22/WG21/docs/papers/1996/N0852.pdf

Но я склоняюсь всё таки к тому что в данном случае Comeau прав.
Re[2]: using-declaration: comeau vs msvc71
От: Aznog Россия  
Дата: 08.06.05 20:20
Оценка:
Здравствуйте, korzhik, Вы писали:

K>Как я понял вопрос открытый Issue 360

K>Вот ещё можешь почитать http://www.open-std.org/JTC1/SC22/WG21/docs/papers/1996/N0852.pdf

K>Но я склоняюсь всё таки к тому что в данном случае Comeau прав.


Спасибо за ссылки, это прояснило ситуацию — действительно, Comeau в данной ситуации выглядит "правее".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.