Suppose I have a template class with a lot of functions and I want to specialize them to change only a few of them and keep the other ones exactly as specified in the base templ
Nicol's solution works fine, but this is an alternative:
template
struct Base
{
void print1() {cout << "Base::print1" << endl;};
void print2() {cout << "Base::print2" << endl;};
};
template<>
void Base::print2() {cout << "Base::print2()" << endl;};
That way you can specialize only specific member functions and still use those that you haven't specialized(in this case, print1
) without any problem. So now you'd use it just like you wanted:
Base i;
i.print1();
i.print2(); // calls your specialization
Demo here.