#include <iostream>
template<class T>
struct Base
{
typedef T type;
static const int n = 3;
virtual int f() = 0;
int f(int x) { return x * 2; }
};
template<class T>
struct Derived : Base<T>
{
using typename Base<T>::type;
using Base<T>::n;
type field;
int f() { return n; }
};
int main()
{
Derived<float> d;
d.field = 42.0f;
std::cout << d.f();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKCnRlbXBsYXRlPGNsYXNzIFQ+IApzdHJ1Y3QgQmFzZSAKewogIHR5cGVkZWYgVCB0eXBlOwogIHN0YXRpYyBjb25zdCBpbnQgbiA9IDM7CiAgdmlydHVhbCBpbnQgZigpID0gMDsKICBpbnQgZihpbnQgeCkgeyByZXR1cm4geCAqIDI7IH0KfTsKCnRlbXBsYXRlPGNsYXNzIFQ+IApzdHJ1Y3QgRGVyaXZlZCA6IEJhc2U8VD4gCnsKICAgIHVzaW5nIHR5cGVuYW1lIEJhc2U8VD46OnR5cGU7CiAgICB1c2luZyBCYXNlPFQ+OjpuOwoKICAgIHR5cGUgZmllbGQ7CiAgICBpbnQgZigpIHsgcmV0dXJuIG47IH0KfTsKCgppbnQgbWFpbigpCnsKCURlcml2ZWQ8ZmxvYXQ+IGQ7CglkLmZpZWxkID0gNDIuMGY7CglzdGQ6OmNvdXQgPDwgZC5mKCk7Cn0=