#include <iostream>
using namespace std;
template<class D>
class Base {
public:
D a;
void doWork(D b) {
a += b;
}
};
class DerA : public Base<int> {
// Make "a" an int
};
class DerB : public Base<float> {
};
int main() {
DerA obj1;
DerB obj2;
obj1.a = 22;
obj2.a = 2.2f;
obj1.doWork(11);
obj2.doWork(1.1f);
cout << obj1.a << endl;
cout << obj2.a;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8Y2xhc3MgRD4KY2xhc3MgQmFzZSB7CnB1YmxpYzoKICAgIEQgYTsKICAgIAogICAgdm9pZCBkb1dvcmsoRCBiKSB7CiAgICAgICAgYSArPSBiOwogICAgfQp9OwoKY2xhc3MgRGVyQSA6IHB1YmxpYyBCYXNlPGludD4gewogICAgLy8gTWFrZSAiYSIgYW4gaW50Cn07CgpjbGFzcyBEZXJCIDogcHVibGljIEJhc2U8ZmxvYXQ+IHsKICAgIAp9OwogICAgCgppbnQgbWFpbigpIHsKICAgCiAgICBEZXJBIG9iajE7CiAgICBEZXJCIG9iajI7CiAgICAKICAgIG9iajEuYSA9IDIyOwogICAgb2JqMi5hID0gMi4yZjsKICAgIAogICAgb2JqMS5kb1dvcmsoMTEpOwogICAgb2JqMi5kb1dvcmsoMS4xZik7CiAgICAKICAgIGNvdXQgPDwgb2JqMS5hIDw8IGVuZGw7CiAgICBjb3V0IDw8IG9iajIuYTsKCiAgICByZXR1cm4gMDsKfQ==