Явный объект доступа к защищенному членуC++

Программы на C++. Форум разработчиков
Anonymous
Явный объект доступа к защищенному члену

Сообщение Anonymous »

Я пытаюсь понять, почему этот код не будет компилировать: < /p>

Код: Выделить всё

class A {
public:
template 
void invokeUser(this Self&& self) {
self.invokeProtected();
}
};

template 
class B : public Bases... {
protected:
void invokeProtected() {}
};

int main() { B{}.invokeUser(); }
< /code>
он не удается со следующей ошибкой: < /p>
error: 'invokeProtected' is a protected member of 'B'
note: in instantiation of function template specialization 'A::invokeUser'
Ясно видит, что его вызывают со ссылкой на B , которая является нашим «это» или «я» в данном случае. Из этого контекста мы должны быть в состоянии получить доступ к охраняемым членам, верно? Это то, что стандарт запрещает, или это ошибка кланг?


Подробнее здесь: https://stackoverflow.com/questions/797 ... ted-member

Вернуться в «C++»