I want to specialize implementation of a template class if T was derived from a specific base class.
How can I do this?
In the code below, x.f() and y.f() should do different work.
I want to work not only for 'Derived' but also for all derived classes from Base.
#include <iostream>
class Base
{
};
class Derived : public Base
{
};
// If T not derived from Base:
template <typename T> class MyClass
{
public:
void f()
{
std::cout << "NOT derived from Base";
}
};
// If T derived from Base:
template <typename T> class MyClass
{
public:
void f()
{
std::cout << "Derived from Base";
}
};
int main()
{
MyClass<int> x;
MyClass<Derived> y;
x.f();
y.f();
}