#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;
}

