class Vector {
private:
  union {
    __m128 v;
    struct {
      float x;
      float y;
      float z;
      float w;
    };
  };

public:
・・・
};


error C2146: 構文エラー : ';' が、識別子 'v' の前に必要です。
error C2501: 'Vector::__unnamed::__m128' : 識別名を宣言するのに、型が指定されていません。
error C2501: 'Vector::__unnamed::v' : 識別名を宣言するのに、型が指定されていません。

__m128 v;をfloat v[4];にするとなぜか通るんです。
どうしてでしょうか?