noexcept for <typeindex>. This completes Chapter 20 [utilities].

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@132267 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Howard Hinnant 2011-05-28 18:57:24 +00:00
parent 0667433587
commit 0687adca37

View File

@ -21,24 +21,24 @@ namespace std
class type_index class type_index
{ {
public: public:
type_index(const type_info& rhs); type_index(const type_info& rhs) noexcept;
bool operator==(const type_index& rhs) const; bool operator==(const type_index& rhs) const noexcept;
bool operator!=(const type_index& rhs) const; bool operator!=(const type_index& rhs) const noexcept;
bool operator< (const type_index& rhs) const; bool operator< (const type_index& rhs) const noexcept;
bool operator<=(const type_index& rhs) const; bool operator<=(const type_index& rhs) const noexcept;
bool operator> (const type_index& rhs) const; bool operator> (const type_index& rhs) const noexcept;
bool operator>=(const type_index& rhs) const; bool operator>=(const type_index& rhs) const noexcept;
size_t hash_code() const; size_t hash_code() const noexcept;
const char* name() const; const char* name() const noexcept;
}; };
template <> template <>
struct hash<type_index> struct hash<type_index>
: public unary_function<type_index, size_t> : public unary_function<type_index, size_t>
{ {
size_t operator()(type_index index) const; size_t operator()(type_index index) const noexcept;
}; };
} // std } // std
@ -58,25 +58,31 @@ class _LIBCPP_VISIBLE type_index
const type_info* __t_; const type_info* __t_;
public: public:
_LIBCPP_INLINE_VISIBILITY _LIBCPP_INLINE_VISIBILITY
type_index(const type_info& __y) : __t_(&__y) {} type_index(const type_info& __y) _NOEXCEPT : __t_(&__y) {}
_LIBCPP_INLINE_VISIBILITY _LIBCPP_INLINE_VISIBILITY
bool operator==(const type_index& __y) const {return *__t_ == *__y.__t_;} bool operator==(const type_index& __y) const _NOEXCEPT
{return *__t_ == *__y.__t_;}
_LIBCPP_INLINE_VISIBILITY _LIBCPP_INLINE_VISIBILITY
bool operator!=(const type_index& __y) const {return *__t_ != *__y.__t_;} bool operator!=(const type_index& __y) const _NOEXCEPT
{return *__t_ != *__y.__t_;}
_LIBCPP_INLINE_VISIBILITY _LIBCPP_INLINE_VISIBILITY
bool operator< (const type_index& __y) const {return __t_->before(*__y.__t_);} bool operator< (const type_index& __y) const _NOEXCEPT
{return __t_->before(*__y.__t_);}
_LIBCPP_INLINE_VISIBILITY _LIBCPP_INLINE_VISIBILITY
bool operator<=(const type_index& __y) const {return !__y.__t_->before(*__t_);} bool operator<=(const type_index& __y) const _NOEXCEPT
{return !__y.__t_->before(*__t_);}
_LIBCPP_INLINE_VISIBILITY _LIBCPP_INLINE_VISIBILITY
bool operator> (const type_index& __y) const {return __y.__t_->before(*__t_);} bool operator> (const type_index& __y) const _NOEXCEPT
{return __y.__t_->before(*__t_);}
_LIBCPP_INLINE_VISIBILITY _LIBCPP_INLINE_VISIBILITY
bool operator>=(const type_index& __y) const {return !__t_->before(*__y.__t_);} bool operator>=(const type_index& __y) const _NOEXCEPT
{return !__t_->before(*__y.__t_);}
_LIBCPP_INLINE_VISIBILITY _LIBCPP_INLINE_VISIBILITY
size_t hash_code() const {return __t_->hash_code();} size_t hash_code() const _NOEXCEPT {return __t_->hash_code();}
_LIBCPP_INLINE_VISIBILITY _LIBCPP_INLINE_VISIBILITY
const char* name() const {return __t_->name();} const char* name() const _NOEXCEPT {return __t_->name();}
}; };
template <class _Tp> struct _LIBCPP_VISIBLE hash; template <class _Tp> struct _LIBCPP_VISIBLE hash;
@ -86,7 +92,8 @@ struct _LIBCPP_VISIBLE hash<type_index>
: public unary_function<type_index, size_t> : public unary_function<type_index, size_t>
{ {
_LIBCPP_INLINE_VISIBILITY _LIBCPP_INLINE_VISIBILITY
size_t operator()(type_index __index) const {return __index.hash_code();} size_t operator()(type_index __index) const _NOEXCEPT
{return __index.hash_code();}
}; };
_LIBCPP_END_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD