同じクラスであればunionを使うのは問題ありませんか?
座標を示すx,y,zという値があり、場合によってはdata[0]〜[2]のように
配列っぽくアクセスしたい場合があります。
x,y,zはPOTではなく、関数なども持つクラスだとして、以下のように
unionを使うのはOKでしょうか?

union {
 {
  foo data[3];
 };
 {
  foo x,y,z;
 };
};

unionがメモリの内容を複数の解釈をするっていうものであるならば、
問題はない様な気がしますが。