// -*- C++ -*- //===-------------------------- typeindex ---------------------------------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef _LIBCPP_TYPEINDEX #define _LIBCPP_TYPEINDEX /* typeindex synopsis namespace std { class type_index { public: type_index(const type_info& rhs); bool operator==(const type_index& rhs) const; bool operator!=(const type_index& rhs) const; bool operator< (const type_index& rhs) const; bool operator<=(const type_index& rhs) const; bool operator> (const type_index& rhs) const; bool operator>=(const type_index& rhs) const; size_t hash_code() const; const char* name() const; }; template <> struct hash : public unary_function { size_t operator()(type_index index) const; }; } // std */ #include <__config> #include #include <__functional_base> #pragma GCC system_header _LIBCPP_BEGIN_NAMESPACE_STD class type_index { const type_info* __t_; public: type_index(const type_info& __y) : __t_(&__y) {} bool operator==(const type_index& __y) const {return *__t_ == *__y.__t_;} bool operator!=(const type_index& __y) const {return *__t_ != *__y.__t_;} bool operator< (const type_index& __y) const {return __t_->before(*__y.__t_);} bool operator<=(const type_index& __y) const {return !__y.__t_->before(*__t_);} bool operator> (const type_index& __y) const {return __y.__t_->before(*__t_);} bool operator>=(const type_index& __y) const {return !__t_->before(*__y.__t_);} size_t hash_code() const {return __t_->hash_code();} const char* name() const {return __t_->name();} }; template struct hash; template <> struct hash : public unary_function { size_t operator()(type_index __index) const {return __index.hash_code();} }; _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_TYPEINDEX