#include <iostream>

template <typename T>
class A {
public:
	A(T* t) : t_(t) {}
	
protected:
	T* t_;
};

template <typename T>
class B : public A<T> {
public:
	B(T* t) : A<T>(t) {}
	
	T get() { return *t_; }
};

int main()
{
	int i = 4;
	B<int> b(&i);
	std::cout << b.get() << std::endl;
}