clang 3.1 (trunk) に Unrestricted unions が実装された

されていました。

[ソース]

#include <complex>

union U{
    U(){}
    ~U(){}
    int i;
    float f;
    std::complex<double> c;
};


int
main(){
    U u;
    static_assert(sizeof(u) == 16, "");
    return 0;
}

着々と実装が進んでいるみたいですね。
ちなみに clang 3.0 でも上記のコードは動作しました。

[コンパイラ]

  • clang++ (LLVM) 3.1 20120306(trunk)