title: Why adding `const` makes the universal reference as rvalue
body: <p>I have been reading about the universal references in Scott's last master piece about the c++11 and 14 with that being said despite an argument assigned to either lvalue or an rvalue type reference parameter there is something in between called universal reference which could deduced to either l/rvalue based on the type trait of an argument that passed . I could understand what makes the  parameter as an universal reference but the one thing that doesn't clear to me is why adding const to the type parameter <code>const T&amp;&amp; p</code> make the p as rvalue:</p>
  
  <pre><code>template&lt;typename T&gt;
  void f(T&amp;&amp; param); // param is an universal reference
  
  template&lt;typename T&gt;
  void f(const T&amp;&amp; param); // param is an rvalue reference
  </code></pre>
  
  <p>Does the <code>const</code> do more than this when assigned to the reference parameter.</p>