title: Is a union a standard-layout type itself?
body: <p>If I have a standard layout type like this:</p>
  
  <pre><code>struct sl_t
  {
    int a;
  };
  </code></pre>
  
  <p>And a union like this:</p>
  
  <pre><code>union un_t
  {
    int b;
    double q;
  };
  </code></pre>
  
  <p>Can I cast and use the union as the struct type? That is, may I assume that the union itself is a standard-layout type and the data is aligned at the start of the memory?</p>
  
  <pre><code>un_t obj;
  sl_t * s = reinterpret_cast&lt;sl_t*&gt;(&amp;obj);
  s-&gt;a = 15;
  assert( obj.b == 15 );
  </code></pre>
  
  <p>Or must I take the address of the variable in the union <code>&amp;obj.b</code>?</p>
  
  <p>Note that I'm already aware that if I store the struct inside the union the C++11 standard guarantees I may access both sl_t::a and un_t::b, referring to 9.5-1.</p>