diff options
Diffstat (limited to 'libcxx/include/typeindex')
-rw-r--r-- | libcxx/include/typeindex | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/libcxx/include/typeindex b/libcxx/include/typeindex index cd7e13ed116..2746f863f99 100644 --- a/libcxx/include/typeindex +++ b/libcxx/include/typeindex @@ -53,29 +53,39 @@ struct hash<type_index> _LIBCPP_BEGIN_NAMESPACE_STD -class type_index +class _LIBCPP_VISIBLE type_index { const type_info* __t_; public: + _LIBCPP_INLINE_VISIBILITY type_index(const type_info& __y) : __t_(&__y) {} + _LIBCPP_INLINE_VISIBILITY bool operator==(const type_index& __y) const {return *__t_ == *__y.__t_;} + _LIBCPP_INLINE_VISIBILITY bool operator!=(const type_index& __y) const {return *__t_ != *__y.__t_;} + _LIBCPP_INLINE_VISIBILITY bool operator< (const type_index& __y) const {return __t_->before(*__y.__t_);} + _LIBCPP_INLINE_VISIBILITY bool operator<=(const type_index& __y) const {return !__y.__t_->before(*__t_);} + _LIBCPP_INLINE_VISIBILITY bool operator> (const type_index& __y) const {return __y.__t_->before(*__t_);} + _LIBCPP_INLINE_VISIBILITY bool operator>=(const type_index& __y) const {return !__t_->before(*__y.__t_);} + _LIBCPP_INLINE_VISIBILITY size_t hash_code() const {return __t_->hash_code();} + _LIBCPP_INLINE_VISIBILITY const char* name() const {return __t_->name();} }; -template <class _Tp> struct hash; +template <class _Tp> struct _LIBCPP_VISIBLE hash; template <> -struct hash<type_index> +struct _LIBCPP_VISIBLE hash<type_index> : public unary_function<type_index, size_t> { + _LIBCPP_INLINE_VISIBILITY size_t operator()(type_index __index) const {return __index.hash_code();} }; |