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;
}