Listing 2

xostream& operator<<(xostream &xos, const YType& y)
{
  return xos << XML::STag("Y")
             << XML::STag("X1")  << y.x1 << XML::ETag()
             << XML::STag("X2")  << y.x2 << XML::ETag()
             << XML::ETag();
};
xistream& operator>>(xistream &xis, YType& y)
{
  return xis >> XML::STag("Y")
             >> XML::STag("X1")  >> y.x1 >> XML::ETag()
             >> XML::STag("X2")  >> y.x2 >> XML::ETag()
             >> XML::ETag();
};