template struct vec2; 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<0,0,-1,-2> 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; }