Why is the second variable passed as a reference and const
<p>Why isn't <code>first</code> passed as a reference and const as well?</p>

<pre><code>template &lt;typename Iterator&gt;
    int distance(Iterator first, const Iterator &amp; last) {
    int count;
    for ( ; first != last; first++)
        count++;
    return count;
}
</code></pre>
