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
Another solution would be to add a level of indirection in the function you want to redefine, i.e.
template
struct foo
{
    template
    void bar_impl()
    {
        //generic function
    }
    void bar()
    {
        bar_impl();
    }
};
   Then you can specialize each function individually for each type or specialize the whole type as wanted.