Retornando o tipo de ponteiro de função

Muitas vezes eu acho a necessidade de escrever funções que retornam ponteiros de função. Sempre que faço, o formato básico que uso é:

typedef int (*function_type)(int,int);

function_type getFunc()
{
   function_type test;
   test /* = ...*/;
   return test;
}

No entanto, isso pode ser complicado ao lidar com um grande número de funções, portanto, eu não gostaria de declarar um typedef para cada um (ou para cada classe de funções)

Eu posso remover o typedef e declarar a variável local retornada na função como:int (*test)(int a, int b); fazendo com que o corpo da função fique assim:

{
     int (*test)(int a, int b);
     test /* = ...*/;
     return test;
}

mas eu não sei o que definir para o tipo de retorno da função. Eu tentei:

int(*)(int,int) getFunc()
{
    int (*test)(int a, int b);
    test /* = ...*/;
    return test;
}

mas isso informa um erro de sintaxe. Como faço para declarar o tipo de retorno para essa função sem declarar um typedef para o ponteiro de função. É mesmo possível? Observe também que estou ciente de que parece que seria mais limpo declarar typedefs, para cada uma das funções, no entanto, tenho muito cuidado em estruturar meu código para que seja o mais limpo e fácil de seguir quanto possível. O motivo pelo qual eu gostaria de eliminar os typedefs é que eles geralmente são usados ​​apenas para declarar as funções de recuperação e, portanto, parecem redundantes no código.

questionAnswers(7)

yourAnswerToTheQuestion