とりあえず代入する必要なところだけ。もっと面白いことも出来るだろうけど、ここに書くには余白が足りない。

struct proxy
{
 float & r1 ; float & r2 ;
public :
 proxy(float &r1, float & r2)
  : r1(r1), r2(r2) { }
 proxy(proxy const & p)
  : r1(p.r1), r2(p.r2) {}
 proxy const & operator = (float f) const
 {
  r1 = f ; r2 = f ;
  return *this ;
 }
} ;
struct Vec3
{
 float v[3] ;
public :
 proxy xy(void)
 { return proxy(v[0], v[1]) ; }
 proxy xz(void)
 { return proxy(v[0], v[2]) ; }
 proxy yz(void)
 { return proxy(v[1], v[2]) ; }
} ;

int main()
{ Vec3 v ; v.xy() = 1.0f ; v.xz() = 1.0f ; v.yz() = 1.0f }