>>17
駄目でした。
最初のエラーと同じ 'void(void)' から 'void(__cdecl *)(void)' に変換できません。

特殊化を定義しておくと通ったりしてちょっと謎。
template<> func<A>() { hage }
ptr = func<A>; // OK
コンパイラのせいかな?