title: Add constructor to a struct; lose array initialization?
body: <p>This works...</p>
  
  <pre><code>struct FOO
  {
    char bar1[50 + 1];
    char bar2[50 + 1];
  };
  
  FOO foo[] = 
  {
    {"baz1", "baz2"},
    {"baz3", "baz4"}
  };
  </code></pre>
  
  <p>But this does not...</p>
  
  <pre><code>struct FOO2
  {
    FOO2(void) { };
    char bar1[50 + 1];
    char bar2[50 + 1];
  };
  
  FOO2 foo2[] = 
  {
    {"baz1", "baz2"},
    {"baz3", "baz4"}
  };
  </code></pre>
  
  <p>Morover, this...</p>
  
  <pre><code>struct FOO3
  {
    void init(void) { };
    char bar1[50 + 1];
    char bar2[50 + 1];
  };
  
  FOO3 foo3[] = 
  {
    {"baz1", "baz2"},
    {"baz3", "baz4"}
  };
  </code></pre>
  
  <p>...works too.</p>
  
  <p>So, methods don't disallow array initialization but a constructor does.</p>
  
  <p>From Microsoft's error description these attributes (among others) cause an entity to become a "non-aggregate" and therefore no longer a valid target for array initialization:</p>
  
  <pre><code>Constructors
  Private or protected members
  Base classes
  Virtual functions 
  </code></pre>
  
  <p>Why, in the case of constructors?</p>