title: Why does C++ disallow anonymous structs?
body: <p>Some C++ compilers permit anonymous unions and structs as an extension to standard C++.  It's a bit of syntactic sugar that's occasionally very helpful.</p>
  
  <p>What's the rationale that prevents this from being part of the standard? Is there a technical roadblock? A philosophical one? Or just not enough of a need to justify it?</p>
  
  <p>Here's a sample of what I'm talking about:</p>
  
  <pre><code>struct vector3 {
    union {
      struct {
        float x;
        float y;
        float z;
      };
      float v[3];
    };
  };
  </code></pre>
  
  <p>My compiler will accept this, but it warns that <a href="http://msdn.microsoft.com/en-us/library/c89bw853(v=vs.100).aspx" rel="noreferrer">"nameless struct/union" is a non-standard extension to C++</a>.</p>