enum precision { packed_highp, packed_mediump, packed_lowp, aligned_highp, aligned_mediump, aligned_lowp, aligned = aligned_highp, highp = packed_highp, mediump = packed_mediump, lowp = packed_lowp, packed = packed_highp, defaultp = highp }; template struct vec2; template struct _swizzle_base0 { char _buffer[1]; }; template struct _swizzle_base1 : public _swizzle_base0 { }; template struct _swizzle_base1 : public _swizzle_base0 { }; template struct _swizzle_base2 : public _swizzle_base1 { }; template struct _swizzle_base2 : public _swizzle_base1 { }; template struct _swizzle : public _swizzle_base2 { }; template struct vec2 { constexpr vec2(T x, T y) : x(x), y(y) {} union { struct { T x, y; }; struct { _swizzle xx; }; }; }; typedef vec2 float2; // Visual C++ has a bug generating the error: fatal error C1001: An internal error has occurred in the compiler. float2 const Bar(1.f, 1.f); int main() { return 0; }