função typedef'ing * signature * (não um ponteiro para), para que possa ser reutilizada?

EDIT: MOTIVATION

Suponha que eu defina uma classe Handler como

class Handler {
public:
  class Message { /*...*/ };
  typedef int (*Callback)(Message *msg);
  void registerCallback(int msgclass, Callback f);
};

Um cliente pode fazer

int f1(Handler::Message *msg)
{ /* handle message */ }

int f2(Handler::Message *msg)
{ /* handle message */ }

int main(){
  Handler h;
  h.registerCallback(1, f1);
  h.registerCallback(2, f2);
  // ....
}

O compilador realmente verificará sef1 ef2 são apropriados como parâmetros pararegisterCallbackno entanto, cabe ao cliente definirf1 ef2 corretamente. Desde que eu játypedefedCallback, Gostaria que o cliente pudesse usá-lo.

EDIT FIM

Eu gostaria de fazer algo assim:

typedef int arithmetic(int i, int j);

arithmetic sum
{
 return i+j;
}

arithmetic max
{
  return (i>j)? i:j;
}
// etc.

No entanto, ambos

arithmetic sum
arithmetic sum()

não compile, e também isso

arithmetic sum(int i, int j)

que fornece erro de compilação de

func.cpp: 4: error: 'sum' declarado como função retornando uma função

A razão pela qual eu quero isso é que eu quero ter umHandler classe que forneceria umatypedef para uma função de retorno de chamada aceita,incluindo a lista de parâmetros.

questionAnswers(5)

yourAnswerToTheQuestion