[func.require]/3 b 1 says
3 If a call wrapper ([func.def]) has a weak result type the type of its member type result_type is based on the type T of the wrapper's target object ([func.def]):
- if T is a function, reference to function, or pointer to function type, result_type shall be a synonym for the return type of T;
- [..]
The first two enumerated types (function and reference to function) can never be valid types for T, because
[func.def]/7
7 A target object is the callable object held by a call wrapper.
and [func.def]/3
3 A callable type is a pointer to function, a pointer to member function, a pointer to member data, or a class type whose objects can appear immediately to the left of a function call operator.
exclude functions and references to function as "target objects".