Listing 2

(a)
Chain<Reservation, std::string> rc = 
  Member_Link<Reservation, unsigned int>(&Reservation::user_id) +
  User_Link() + Member_Link<User, std::string>(&User::name);
Reservation r;
std::string &user_name = rc.traverse(r)


(b)
Ref_Chain<Reservation_Hack, std::string> rc_hack
   (Member_Link<Reservation, User>(&Reservation_Hack::user) +
    Member_Link<User, std::string>(&User::name));