namespace std {
  class type_info {
  public:
    virtual ~type_info();
    const char* name() const { return __name; }
    bool operator==(const type_info& __arg) const {
     return __name == __arg.__name;
    }

    bool operator!=(const type_info& __arg) const {
      return !operator==(__arg);
    }
  protected:
    const char *__name;
  };
}
