template<typename A>
class Base {};
template<typename A, typename B>
class Derived : public Base<A> {
public:
void doSomething() {}
};
int main() {
Base<int>* foo = new Derived<int, double>;
static_cast<Derived<int, double>*>(foo)->doSomething();
return 0;
}
dGVtcGxhdGU8dHlwZW5hbWUgQT4KY2xhc3MgQmFzZSB7fTsKCnRlbXBsYXRlPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEI+CmNsYXNzIERlcml2ZWQgOiBwdWJsaWMgQmFzZTxBPiB7CnB1YmxpYzoKCXZvaWQgZG9Tb21ldGhpbmcoKSB7fQp9OwoKaW50IG1haW4oKSB7CglCYXNlPGludD4qIGZvbyA9IG5ldyBEZXJpdmVkPGludCwgZG91YmxlPjsKCXN0YXRpY19jYXN0PERlcml2ZWQ8aW50LCBkb3VibGU+Kj4oZm9vKS0+ZG9Tb21ldGhpbmcoKTsKCXJldHVybiAwOwp9