Initialize more than one non static data member of union
<p>Consider following program which is ill formed according to standard</p>

<pre><code>union Test {
    int s{3};
    float f;
    Test() {}            
    Test(float f) : f(f) {} // this should be error
  };

int main() {

}
</code></pre>

<p>C++11 standard <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3376.pdf" rel="nofollow">N3376</a> clause 12 section 6.2.8 says that ( emphasis mine):</p>

<blockquote>
  <p>An attempt to initialize more than one non-static data member of a
  union renders the program <strong>ill-formed</strong>.</p>
</blockquote>

<p>But all the popular 3 compilers ( g++, clang++, MSVC++ ) compiles above program without producing any compiler error or warning. I think it is necessary for a compiler to give diagnosis in this program &amp; program should fail in compilation. </p>

<p>See live demo tested on g++ <a href="http://coliru.stacked-crooked.com/a/308dd3241e2a6b04" rel="nofollow">here</a>.</p>

<p>See live demo tested on clang++ <a href="http://coliru.stacked-crooked.com/a/378733972e2d2ea3" rel="nofollow">here</a>.</p>

<p>Are all the compilers broken here according to standard ? Is this compiler bug ? </p>