Address of a reference to first item of an array
<p>I'm a bit confused about this:</p>

<p>I thought that if a pointer points to some object, assigning a dereference to some reference variable was a mere aliasing.</p>

<p>Example:</p>

<pre><code>Object * p = &amp;o;
Object &amp; r = *p;
// r and o are the same object
</code></pre>

<p>I was aware there was some illegal cases, like:</p>

<pre><code>Object * p = NULL;
Object &amp; r = *p; // illegal
</code></pre>

<p>Now, what about the code below ?</p>

<pre><code>const char * p = "some string";
const char &amp; r = *p;
</code></pre>

<p>or</p>

<pre><code>const char &amp; r = *"some string";
</code></pre>

<p>I was said that this particular case involved temporary objects and, therefore I could'nt get the address of r and be sure it will point to a memory array containing my initial string.</p>

<p>What does C++ standard states about that case ? Is it another illegal case like the NULL provision, or is it allowed behavior.</p>

<p>In other words, is it legal or illegal (undefined behavior ?) to write something like ?</p>

<pre><code>   char buffer[100];
   strcpy(buffer, &amp;r);
</code></pre>
