title: Can an identity alias template be a forwarding reference?
body: <p>Consider the following snippet below:</p>
  
  <pre><code>template &lt;class T&gt;
  using identity = T;
  
  template &lt;class T&gt;
  void foo(identity&lt;T&gt;&amp;&amp;) {}
  
  int main()
  {
    int i{};
    foo(i);
  }
  </code></pre>
  
  <p><code>i</code> is an lvalue, hence if <code>foo</code> declares a forwarding reference parameter, it should compile. However, if <code>identity&lt;T&gt;&amp;&amp;</code> is turned to be <code>int&amp;&amp;</code>, it should raise an error instead.</p>
  
  <p>The code compiles in GCC 6.0.0 (<a href="http://melpon.org/wandbox/permlink/XQg1vhNx0MSrgHT2" rel="nofollow noreferrer">demo</a>).</p>
  
  <p>The code fails to compile in Clang 3.7.0 (<a href="http://melpon.org/wandbox/permlink/OGCUVTrh37XPHFdh" rel="nofollow noreferrer">demo</a>) with error message:</p>
  
  <pre><code>error: no known conversion from 'int' 
  to 'identity&lt;int&gt; &amp;&amp;' (aka 'int &amp;&amp;') for 1st argument
  </code></pre>
  
  <p>Which one is right?</p>