title: Is this a GCC bug? Initializing structs with unions
body: <p>I may have found a bug with GCC v4.8.2, but I want to check first before I submit it as it could be me doing something wrong!</p>
  
  <p>The following code:</p>
  
  <pre class="lang-cpp prettyprint-override"><code>#include &lt;vector&gt;
  struct Message
  {
    typedef union {
      char byte;
      const char *str;
    } Parameter;
  
    Parameter p1;
    Parameter p2;
  };
  
  int main()
  {
    std::vector&lt;Message&gt; messages_;
  
    messages_.push_back({{ .byte = 'a' }});
  
    Message message = {{ .byte = 'a' }, { .str = "Hello World" }};
    messages_.push_back(message);
  
    messages_.push_back({{ .byte = 'a' }, { .str = "Hello World" }});
  }
  </code></pre>
  
  <p><code>clang++ -std=c++11 main.cpp</code> compiles this fine. However <code>g++</code> outputs this:</p>
  
  <pre><code>main.cpp: In function ‘int main()’:
  main.cpp:23:66: internal compiler error: in reshape_init_class, at cp/decl.c:5216
     messages_.push_back({{ .byte = 'a' }, { .str = "Hello World" }});
                                                                    ^
  Please submit a full bug report,
  with preprocessed source if appropriate.
  See &lt;http://bugzilla.redhat.com/bugzilla&gt; for instructions.
  Preprocessed source stored into /tmp/ccrf5vwr.out file, please attach this to your bugreport.
  </code></pre>
  
  <p>I'll submit this as a bug if nobody has any ideas, although in my experience a programmers problem is almost never a compiler bug and almost always a fault of his own!</p>