title: How can this structure have sizeof == 0?
body: <p>There is an old post asking for a construct for which <code>sizeof</code> would return <code>0</code>. There are some high score answers from high reputation users saying that by the standard no type or variable can have sizeof 0. And I agree 100% with that.</p>
  
  <p>However there is <a href="https://stackoverflow.com/a/47352302/2805305">this new answer</a> which presents this solution:</p>
  
  <pre><code>struct ZeroMemory {
      int *a[0];
  };
  </code></pre>
  
  <p>I was just about to down-vote and comment on it, but time spent here taught me to check even the things that I am 100% sure on. So... to my surprise both <code>gcc</code> and <code>clang</code> show the same results: <code>sizeof(ZeroMemory) == 0</code>. Even more, sizeof a variable is <code>0</code>:</p>
  
  <pre><code>ZeroMemory z{};
  static_assert(sizeof(z) == 0); // Awkward...
  </code></pre>
  
  <p>Whaaaat...?</p>
  
  <p><a href="https://godbolt.org/g/hyVr9u" rel="noreferrer">Godbolt link</a></p>
  
  <p>How is this possible?</p>