Специализировать шаблон функции с разными сигнатурами?


У меня есть шаблон, который требует, чтобы я передал его функтор в качестве параметра типа для того, чтобы выполнить некоторые расчеты. Я бы хотела специализироваться этот функтор на основе другой функции, которые я хочу использовать для выполнения расчетов. В принципе, я хочу сделать это (что не законно, я переиначивая функтор):

template<typename T, int (*func)(int)>struct Functor{    T val;    int operator()(int x) { return func(2); }};template<typename T, int (*func)(int, int)>struct Functor {    T val;    int operator()(int y) { return func(y, 2); }};Component<Functor<calculationFunction1>> comp1;Component<Functor<calculationFunction2>> comp2;auto result1 = comp1.Compute();auto result2 = comp2.Compute();

Я попытался с помощью частичной специализации, чтобы получить эту работу, но это, кажется, не быть правовым, либо. Я не уверен, если это возможно, чтобы получить то, что я хочу, так как эти две функции имеют разные подписи. Какой самый лучший способ добиться того, что я пытаюсь сделать здесь?