title: Why use identity in forward definition for C++0x rvalue reference?
body: <p>In <a href="http://www.artima.com/cppsource/rvalue.html">A Brief Introduction to Rvalue References</a>, <code>forward</code> is defined as follows:</p>
  
  <pre><code>  template &lt;typename T&gt;
    struct identity { typedef T type; };
  
    template &lt;typename T&gt;
    T &amp;&amp;forward(typename identity&lt;T&gt;::type &amp;&amp;a) { return a; }
  </code></pre>
  
  <p>What purpose does the <code>identity</code> class perform? Why not:</p>
  
  <pre><code>  template &lt;typename T&gt;
    T &amp;&amp;forward(T &amp;&amp;a) { return a; }
  </code></pre>