title: Significance of parentheses in decltype((c))?
body: <p>I was reading <a href="http://en.wikipedia.org/wiki/C++11#Type_inference" rel="noreferrer">this article on Wikipedia regarding <code>C++11</code> <em>Type Inference</em> feature</a>.</p>
  
  <p>There is an example and I quote:</p>
  
  <pre><code>#include &lt;vector&gt;
  int main() {  
      const std::vector&lt;int&gt; v(1);  
      auto a = v[0];        // a has type int  
      decltype(v[1]) b = 1; // b has type const int&amp;, the return type of  
                            //   std::vector&lt;int&gt;::operator[](size_type) const  
      auto c = 0;           // c has type int  
      auto d = c;           // d has type int  
      decltype(c) e;        // e has type int, the type of the entity named by c  
      decltype((c)) f = c;  // f has type int&amp;, because (c) is an lvalue  
      decltype(0) g;        // g has type int, because 0 is an rvalue  
  }
  </code></pre>
  
  <p>in the following lines:</p>
  
  <pre><code>    decltype(c) e;        // e has type int, the type of the entity named by c  
      decltype((c)) f = c;  // f has type int&amp;, because (c) is an lvalue  
  </code></pre>
  
  <p>What's the difference between <code>c</code> and <code>(c)</code>?  Why does <code>(c)</code> represent an <em>lvalue</em>?</p>