関数ポインタを使ったメッセージディスパッチを作っています。
関数ポインタの型がそれぞれ違う場合、関数ポインタをコンテナのようなものでひとまとめに保持することは不可能でしょうか?

static const int EVENT1 = 0;
static const int EVENT2 = 1;
...
typedef int (*func) (int, int);
func funcArray[SIZE];
funcArray[EVENT1] = func1;
funcArray[EVENT2] = func2;
...
funcArray[EVENT1](10, 10);
と等価なようなことをやろうと思っているんですが、型が違う場合はポインタをバラバラに保持するしかないでしょうか?