You cannot partially specialize a function template, that is not supported by the language. What you can do is to create a partially specialized class template with a static member function, and possibly a trampoline function that would instantiate that class template and invoke the static function.
Something like this:
namespace detail
{
template<typename Signature>
struct helper;
template<typename R, typename A1>
struct helper<R(A1)>
{
static void call()
{
// Do stuff with R and A1...
}
};
}
template<typename Signature>
void Func()
{
detail::helper<Signature>::call();
}