Implement P0599: 'noexcept for hash functions'. Fix a couple of hash functions (optional<T> and unique_ptr<T>) which were mistakenly marked as 'noexcept'. Reviewed as https://reviews.llvm.org/D31234
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@298573 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -36,6 +36,7 @@ int main()
|
||||
{
|
||||
typedef int T;
|
||||
optional<T> opt;
|
||||
ASSERT_NOT_NOEXCEPT(std::hash<optional<T>>()(opt));
|
||||
assert(std::hash<optional<T>>{}(opt) == nullopt_hash);
|
||||
opt = 2;
|
||||
assert(std::hash<optional<T>>{}(opt) == std::hash<T>{}(*opt));
|
||||
@@ -43,6 +44,7 @@ int main()
|
||||
{
|
||||
typedef std::string T;
|
||||
optional<T> opt;
|
||||
ASSERT_NOT_NOEXCEPT(std::hash<optional<T>>()(opt));
|
||||
assert(std::hash<optional<T>>{}(opt) == nullopt_hash);
|
||||
opt = std::string("123");
|
||||
assert(std::hash<optional<T>>{}(opt) == std::hash<T>{}(*opt));
|
||||
@@ -50,6 +52,7 @@ int main()
|
||||
{
|
||||
typedef std::unique_ptr<int> T;
|
||||
optional<T> opt;
|
||||
ASSERT_NOT_NOEXCEPT(std::hash<optional<T>>()(opt));
|
||||
assert(std::hash<optional<T>>{}(opt) == nullopt_hash);
|
||||
opt = std::unique_ptr<int>(new int(3));
|
||||
assert(std::hash<optional<T>>{}(opt) == std::hash<T>{}(*opt));
|
||||
|
||||
Reference in New Issue
Block a user