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 でも上記のコードは動作しました。