summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.hash/hash_unique_ptr.pass.cpp8
-rw-r--r--libcxx/test/std/utilities/optional/optional.hash/hash.pass.cpp12
2 files changed, 14 insertions, 6 deletions
diff --git a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.hash/hash_unique_ptr.pass.cpp b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.hash/hash_unique_ptr.pass.cpp
index fc346d4dce7..78b04d8615b 100644
--- a/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.hash/hash_unique_ptr.pass.cpp
+++ b/libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.hash/hash_unique_ptr.pass.cpp
@@ -50,7 +50,7 @@ namespace std {
template <class T>
struct hash<::min_pointer<T, std::integral_constant<size_t, 1>>> {
- size_t operator()(::min_pointer<T, std::integral_constant<size_t, 1>> p) const noexcept(false) {
+ size_t operator()(::min_pointer<T, std::integral_constant<size_t, 1>> p) const TEST_NOEXCEPT_FALSE {
if (!p) return 0;
return std::hash<T*>{}(std::addressof(*p));
}
@@ -67,12 +67,16 @@ int main()
int* ptr = new int;
std::unique_ptr<int> p(ptr);
std::hash<std::unique_ptr<int> > f;
- ASSERT_NOT_NOEXCEPT(f(p));
std::size_t h = f(p);
assert(h == std::hash<int*>()(ptr));
}
#if TEST_STD_VER >= 11
{
+ std::unique_ptr<int, PointerDeleter<int, 1>> pThrowingHash;
+ std::hash<std::unique_ptr<int, PointerDeleter<int, 1>>> fThrowingHash;
+ ASSERT_NOT_NOEXCEPT(fThrowingHash(pThrowingHash));
+ }
+ {
test_enabled_with_deleter<int, Deleter<int>>();
test_enabled_with_deleter<int[], Deleter<int[]>>();
test_enabled_with_deleter<int, CopyDeleter<int>>();
diff --git a/libcxx/test/std/utilities/optional/optional.hash/hash.pass.cpp b/libcxx/test/std/utilities/optional/optional.hash/hash.pass.cpp
index 8c91d6da761..b4a1832cdc0 100644
--- a/libcxx/test/std/utilities/optional/optional.hash/hash.pass.cpp
+++ b/libcxx/test/std/utilities/optional/optional.hash/hash.pass.cpp
@@ -26,7 +26,7 @@ namespace std {
template <>
struct hash<B> {
- size_t operator()(B const&) noexcept(false) { return 0; }
+ size_t operator()(B const&) TEST_NOEXCEPT_FALSE { return 0; }
};
}
@@ -37,10 +37,16 @@ int main()
const std::size_t nullopt_hash =
std::hash<optional<double>>{}(optional<double>{});
+
+ {
+ optional<B> opt;
+ ASSERT_NOT_NOEXCEPT(std::hash<optional<B>>()(opt));
+ ASSERT_NOT_NOEXCEPT(std::hash<optional<const B>>()(opt));
+ }
+
{
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));
@@ -48,7 +54,6 @@ 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));
@@ -56,7 +61,6 @@ 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));
OpenPOWER on IntegriCloud