クラステンプレートを使ってのプログラミングをしています。

template<class T> void func(T obj) { obj(10, 20); };
void test(int a, int b) { printf("%d + %d = %d\n", a, b, a + b); }

において、

func<void(int, int)>(test);
func<void(*)(int, int)>(test);

では何がちがうんですか??