std::for_each signature and type specifications of parameters
<p>Please explain how someone should reason to deduce 
the type specifications of the _Func parameter of std::for_each? </p>

<p>Motivation behind the questions is to understand the type requirements from method signature. </p>

<pre><code>template&lt;class _InIt, class _Fn1&gt; 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));
}
</code></pre>
