>>354
とりあえず作ってみた。これで「v0.xz = v1.zx;」のような表記ができるよ。
完全にするにはSxy,Syz,Szx,Sxz,Szy,Szx,Sxyzの実装を網羅する必要がある。

struct Sxyz {
 float x,y,z;
 Sxyz & operator = (float f) { x=y=z=f; return *this; }
};
struct Sxy;
struct Sxz;
struct Szx;

struct Sxy : public Sxyz
{
 Sxy & operator = (float f) { x=y=f; return *this; }
};
struct Sxz : public Sxyz
{
 Sxz & operator = (Szx r);
};
struct Szx : public Sxyz {};

Sxz & Sxz::operator = (Szx r) { x=r.x; z=r.z; return *this; }

// つづく