C++11: reinterpreting array of structs as array of struct's member
<p>Consider the following type:</p>

<pre><code>struct S
{
    char v;
};
</code></pre>

<p>Given an array of <code>const S</code>, is it possible to, <em>in a standard conformant way</em>, reinterpret it as an array of <code>const char</code> whose elements correspond to the value of the member <code>v</code> for each of the original array's elements, and vice-versa? For example:</p>

<pre><code>const S a1[] = { {'a'}, {'4'}, {'2'}, {'\0'} };
const char* a2 = reinterpret_cast&lt; const char* &gt;(a1);

for (int i = 0; i &lt; 4; ++i)
    std::cout &lt;&lt; std::boolalpha &lt;&lt; (a1[i].v == a2[i]) &lt;&lt; ' ';
</code></pre>

<p>Is the code above portable and would it print <code>true true true true</code>? If not, is there any other way of achieving this?</p>

<p>Obviously, it is possible to create a new array and initialize it with the member <code>v</code> of each element of the original array, but the whole idea is to avoid creating a new array.</p>