Please explain how someone should reason to deduce the type specifications of the _Func parameter of std::for_each?
Motivation behind the questions is to understand the type requirements from method signature.
template<class _InIt, class _Fn1> inline
_Fn1 for_each(_InIt _First, _InIt _Last, _Fn1 _Func) {
_DEBUG_RANGE(_First, _Last);
_DEBUG_POINTER(_Func);
_For_each(_Unchecked(_First), _Unchecked(_Last), _Func);
return (_STD move(_Func));
}