title: Confusing C++ Template
body: <p>I am studying C++ Templates. Can someone plaese explain every bit of this piece of code</p>
  
  <pre><code>template &lt;class T&gt;
  struct identity
  {
      typedef T type;
  };
  template &lt;class T&gt;
  T&amp;&amp; forward(typename identity&lt;T&gt;::type&amp;&amp; a)
  {
      return a;
  }
  </code></pre>