title: Does the C++17 standard guarantee that the address of a union is the same as the address of its members?
body: <p>I am currently working on programming a pool allocator. My question boils down to the following code:</p>
  <pre><code>template &lt;typename T&gt;
  union myUnion {
      T data;
      myUnion&lt;T&gt;* nextUnion;
  };
  
  void someFunction(){
      myUnion&lt;T&gt; mu;
      T* t = new (std::addressof(mu.data)) T();
      //some code
      myUnion&lt;T&gt;* mu2 = reinterpret_cast&lt;myUnion&lt;T&gt;*&gt;(t);
  }
  </code></pre>
  <p>Is the address of mu always the same as mu2?</p>