// Bug: g++ screws up derived->base conversions when calling a global function
// in the presence of matching members in the base.  Whew.

struct xios {
  virtual ~xios() { }
};

struct xistream: virtual public xios {
  int j;
  void operator>>(char&);
};

struct xfstreambase: virtual public xios { };

struct xifstream: public xfstreambase, public xistream { };

void operator>>(xistream& i, int j)
{
  i.j = 0;
}

int main() {
  int i;
  xifstream ifs;
  
  ifs >> i;
}
