template <typename T>
struct func {};
int (float, bool)
сам по себе уже является типом.
Если вы только хотите сопоставить типы, являющиеся функцией с 2 параметрами, создайте специализацию следующим образом:
template <typename T>
struct func;
template <typename R, typename T1, typename T2>
struct func<R(T1,T2)> {
typedef R return_type;
typedef T1 first_argument_type;
typedef T2 second_argument_type;
};