#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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmNsYXNzIEEgewpwdWJsaWM6CglBKFQqIHQpIDogdF8odCkge30KCQpwcm90ZWN0ZWQ6CglUKiB0XzsKfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpjbGFzcyBCIDogcHVibGljIEE8VD4gewpwdWJsaWM6CglCKFQqIHQpIDogQTxUPih0KSB7fQoJCglUIGdldCgpIHsgcmV0dXJuICp0XzsgfQp9OwoKaW50IG1haW4oKQp7CglpbnQgaSA9IDQ7CglCPGludD4gYigmaSk7CglzdGQ6OmNvdXQgPDwgYi5nZXQoKSA8PCBzdGQ6OmVuZGw7Cn0=