title: Does struct with reference member have unique object representation?
body: <p>This <a href="https://stackoverflow.com/a/62714013/1625187">answer</a> raised the following question.</p>
  <p>Suppose we have a simple</p>
  <pre><code>struct S {
      int&amp; i;
  }
  </code></pre>
  <p>Internally (in GCC and Clang, at least) <code>S</code> contains just a pointer to an <code>int</code>, and</p>
  <pre><code>static_assert(sizeof(int*) == 8);
  static_assert(sizeof(S)    == 8);
  </code></pre>
  <p>Does <code>S</code> have a unique object representation? GCC and Clang disagree *:</p>
  <pre><code>static_assert( std::has_unique_object_representations_v&lt;int*&gt;);
  static_assert(!std::has_unique_object_representations_v&lt;S&gt;);    // GCC
  static_assert( std::has_unique_object_representations_v&lt;S&gt;);    // Clang
  </code></pre>
  <p>Which compiler is right here and why?</p>
  <p>* Disagreement between GCC and Clang was noted by <strong>idclev 463035818</strong>.</p>