>>398
struct Hage {
  int n;
  Hage():n(){}
  Hage(int an):n(an){}
};
std::ostream& operator<<(std::ostream& ost, const Hage& o){
  ost << o.n;
  return ost;
}
std::istream& operator>>(std::istream& ist, Hage& o){
  int n;
  ist >> n;
  o = Hage(n);
  return ist;
}
void f(){
  Hage a(10),b;
  std::stringstream ss;
  ss << a;
  ss >> b;
  std::cout << b << std::endl; // "10"
}