title: Union of layout-compatible types
body: <p>Look at this code:</p>
  
  <pre><code>struct A {
      short s;
      int i;
  };
  struct B {
      short s;
      int i;
  };
  
  union U {
      A a;
      B b;
  };
  
  int fn() {
      U u;
      u.a.i = 1;
      return u.b.i;
  }
  </code></pre>
  
  <p>Is it guaranteed that <code>fn()</code> returns <code>1</code>?</p>
  
  <p>Note: this is a follow-up question to <a href="https://stackoverflow.com/questions/53041630/whats-the-purpose-of-layout-compatible-types">this</a>.</p>