title: Why can const char* const & = "hello" compile?
body: <p>I am reading a code snippet from a book and find this:</p>
  
  <pre><code>const char* const &amp; a = "hello"; //can compile 
  const char*&amp; a = "hello"; //cannot
  </code></pre>
  
  <p>All I know is that when initializing a reference, the <em>array to pointer conversion</em> would not take place. </p>
  
  <p><code>const char* const &amp;</code>, a reference to a <code>const pointer</code>, the pointer points to <code>const char</code>.</p>
  
  <p><code>const char*&amp;</code>, a reference to a <code>pointer</code>, the pointer points to 
  <code>const char</code>.</p>
  
  <p>So why does adding an extra <code>const</code>, indicating that the pointer is a <code>const</code>, allow it to compile?</p>