summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std/utilities/optional
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/test/std/utilities/optional')
-rw-r--r--libcxx/test/std/utilities/optional/optional.hash/enabled_hash.pass.cpp26
-rw-r--r--libcxx/test/std/utilities/optional/optional.hash/hash.pass.cpp21
2 files changed, 47 insertions, 0 deletions
diff --git a/libcxx/test/std/utilities/optional/optional.hash/enabled_hash.pass.cpp b/libcxx/test/std/utilities/optional/optional.hash/enabled_hash.pass.cpp
new file mode 100644
index 00000000000..e54a4ced841
--- /dev/null
+++ b/libcxx/test/std/utilities/optional/optional.hash/enabled_hash.pass.cpp
@@ -0,0 +1,26 @@
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// UNSUPPORTED: c++98, c++03, c++11, c++14
+
+// <optional>
+
+// Test that <optional> provides all of the arithmetic, enum, and pointer
+// hash specializations.
+
+#include <optional>
+
+#include "poisoned_hash_helper.hpp"
+
+int main() {
+ test_library_hash_specializations_available();
+ {
+
+ }
+}
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 dfdd07ddf45..ea89dc3bd92 100644
--- a/libcxx/test/std/utilities/optional/optional.hash/hash.pass.cpp
+++ b/libcxx/test/std/utilities/optional/optional.hash/hash.pass.cpp
@@ -17,6 +17,15 @@
#include <memory>
#include <cassert>
+#include "poisoned_hash_helper.hpp"
+
+struct A {};
+struct B {};
+
+template <>
+struct std::hash<B> {
+ size_t operator()(B const&) { return 0; }
+};
int main()
{
@@ -45,4 +54,16 @@ int main()
opt = std::unique_ptr<int>(new int(3));
assert(std::hash<optional<T>>{}(opt) == std::hash<T>{}(*opt));
}
+ {
+ test_hash_enabled_for_type<std::optional<int> >();
+ test_hash_enabled_for_type<std::optional<int*> >();
+ test_hash_enabled_for_type<std::optional<const int> >();
+ test_hash_enabled_for_type<std::optional<int* const> >();
+
+ test_hash_disabled_for_type<std::optional<A>>();
+ test_hash_disabled_for_type<std::optional<const A>>();
+
+ test_hash_enabled_for_type<std::optional<B>>();
+ test_hash_enabled_for_type<std::optional<const B>>();
+ }
}
OpenPOWER on IntegriCloud