#include <iostream>
#include <string>
class Base
{
public:
virtual std::string Foo()
{
return "Base";
}
};
template <typename T>
class Derived : public Base
{
public:
virtual std::string Foo() override
{
return "Derived";
}
};
template<> std::string Derived<float>::Foo() { return Base::Foo(); }
int main()
{
Derived<int> testInt;
std::cout << testInt.Foo() << std::endl;
Derived<float> testFloat;
std::cout << testFloat.Foo() << std::endl;//I would like this to print 'Base'
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKY2xhc3MgQmFzZQp7CnB1YmxpYzoKICAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgRm9vKCkKICAgIHsKICAgICAgICByZXR1cm4gIkJhc2UiOwogICAgfQp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmNsYXNzIERlcml2ZWQgOiBwdWJsaWMgQmFzZQp7CnB1YmxpYzoKICAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgRm9vKCkgb3ZlcnJpZGUKICAgIHsKICAgICAgICByZXR1cm4gIkRlcml2ZWQiOwogICAgfQp9OwoKdGVtcGxhdGU8PiBzdGQ6OnN0cmluZyBEZXJpdmVkPGZsb2F0Pjo6Rm9vKCkgeyByZXR1cm4gQmFzZTo6Rm9vKCk7IH0KCmludCBtYWluKCkKewogICAgRGVyaXZlZDxpbnQ+IHRlc3RJbnQ7CiAgICBzdGQ6OmNvdXQgPDwgdGVzdEludC5Gb28oKSA8PCBzdGQ6OmVuZGw7CgogICAgRGVyaXZlZDxmbG9hdD4gdGVzdEZsb2F0OwogICAgc3RkOjpjb3V0IDw8IHRlc3RGbG9hdC5Gb28oKSA8PCBzdGQ6OmVuZGw7Ly9JIHdvdWxkIGxpa2UgdGhpcyB0byBwcmludCAnQmFzZScKfQoK