Вы не можете делать в точности то, что вы хотите (используя синтаксис из вашего кода).
Один пример правильного способа сделать это:
union{
float coords[4];
vector float vec4;
};
И затем вы можете выбрать элемент за элементом.
В качестве альтернативы:
union{
struct {
float X, Y, Z;
} v;
vector float vec4;
};
Но затем вы получаете доступ к значениям через .v.X