Q:

why pointer to function type is absent in the list of deducible type

template<typename T>
struct Test{};  

template<typename Ret, typename...Args>
struct Test<Ret(*)(Args...)>{
    using type = int;
};
void func(int){}
int main(){
  Test<decltype(&func)>::type b;
}

If type P is Ret(*)(Args...) and the corresponding argument type A is void(*)(int), the deduction attempt to deduce template argument from A, however such form is not listed in the following list which specifies the what form of type can be deduced.
temp.deduct.type#8

A template type argument T, a template template argument TT or a template non-type argument i can be deduced if P and A have one of the following forms:

T
cv-list T
T*
T&
T&&
T[integer-constant]
template-name  (where template-name refers to a class template)
type(T)
T()
T(T)
T type::*
type T::*
T T::*
T (type::*)()
type (T::*)()
type (type::*)(T)
type (T::*)(T)
T (type::*)(T)
T (T::*)()
T (T::*)(T)
type[i]
template-name  (where template-name refers to a class template)
TT
TT
TT<>

The list specifies so much however pointer to function type is absent, only function type such as T(T)   is comprised, so why a pointer to function type is absent in this list, such type should be deducible.

A:

A pointer-to-function type Ret(*)(Args...) is nothing but a T* where T is Ret(Args...).
Edit: further examination has proven that this is not sufficient.

