#include <iostream>
using namespace std;
template <typename T>
class Base {
public:
T t;
void use() {cout << "base" << endl;};
};
template <typename T>
class Derived: public Base<T> {
public:
using Base<T>::use;
T x;
void print() { use(); };
};
using namespace std;
int main() {
Derived<float> *s = new Derived<float>();
s->Base<float>::use(); // this is okay
s->use(); // compiler complaints that "void Base<T>::use() is inaccessible"
s->print(); // this is okay
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpjbGFzcyBCYXNlIHsKcHVibGljOgogICAgVCB0OwogICAgdm9pZCB1c2UoKSB7Y291dCA8PCAiYmFzZSIgPDwgZW5kbDt9Owp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmNsYXNzIERlcml2ZWQ6IHB1YmxpYyBCYXNlPFQ+IHsKCnB1YmxpYzoKICAgdXNpbmcgQmFzZTxUPjo6dXNlOwogICBUIHg7CiAgIHZvaWQgcHJpbnQoKSB7IHVzZSgpOyB9OwoKfTsKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCiAgICBEZXJpdmVkPGZsb2F0PiAqcyA9IG5ldyBEZXJpdmVkPGZsb2F0PigpOwoKICAgIHMtPkJhc2U8ZmxvYXQ+Ojp1c2UoKTsgLy8gdGhpcyBpcyBva2F5CiAgICBzLT51c2UoKTsgIC8vIGNvbXBpbGVyIGNvbXBsYWludHMgdGhhdCAidm9pZCBCYXNlPFQ+Ojp1c2UoKSBpcyBpbmFjY2Vzc2libGUiCgogICAgcy0+cHJpbnQoKTsgLy8gdGhpcyBpcyBva2F5CgogICAgcmV0dXJuIDA7Cn0KCg==