Рассмотрим следующий код:
struct A {
int propose();
};
struct A1 : A {
int propose(int);
using A::propose;
};
struct B1 : A1 {
protected:
using A1::propose;
public:
using A::propose;
};
int main() {
B1().propose();
}
Скомпилируйте это: g++ -std=c++11 main.cpp
.
Я получаю следующую ошибку компилятора с помощью GNU 4.8.1:
main.cpp: In function 'int main()':
main.cpp:2:9: error: 'int A::propose()' is inaccessible
int propose();
^
main.cpp:18:18: error: within this context
B1().propose();
Однако этот код компилируется в AppleClang 6.0.0.6000056.
Я понимаю, что нет необходимости в using
в B1
(в моем коде был необходим, но по ошибке я имел 1 using
). В любом случае, почему Кланг компилирует его? Ожидается ли это?