title: is_const doesn't work as expected for reference
body: <p>I wrote a test program:</p>
  
  <pre><code>#include &lt;iostream&gt; 
  #include &lt;type_traits&gt; 
  using namespace std; 
  template&lt;class T&gt; 
  void f(T&amp;&amp; t) 
  { 
       cout&lt;&lt;is_const&lt;T&gt;()&lt;&lt;endl; 
       //++t; 
  } 
  int main() { 
       const int i=0; 
       f(i); 
       return 0; 
  } 
  </code></pre>
  
  <p>It outputs "0", showing <code>T</code> is not const! This is weird. Then I modified <code>f</code>:</p>
  
  <pre><code>template&lt;class T&gt; 
  void f(T&amp;&amp; t) 
  { 
       cout&lt;&lt;is_const&lt;T&gt;()&lt;&lt;endl; 
       ++t; 
  } 
  </code></pre>
  
  <p>Then there's compiler error, saying we're modifying a read only <code>t</code>.
  So is <code>t</code> modifiable or not, at all? Is there any mis-assumption in my program?</p>