summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std/utilities/variant/variant.hash
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2016-12-02 23:38:31 +0000
committerEric Fiselier <eric@efcs.ca>2016-12-02 23:38:31 +0000
commit918f32fc7b2f4e3c7f3b76db941822aa8ffb5197 (patch)
tree88dcb41c643f7fdb33f33ee1051e1278ef8f4ea8 /libcxx/test/std/utilities/variant/variant.hash
parent75453b057b6b76889ff3a5bca99f8099c628b389 (diff)
downloadbcm5719-llvm-918f32fc7b2f4e3c7f3b76db941822aa8ffb5197.tar.gz
bcm5719-llvm-918f32fc7b2f4e3c7f3b76db941822aa8ffb5197.zip
Make variant's index part of the hash value
llvm-svn: 288554
Diffstat (limited to 'libcxx/test/std/utilities/variant/variant.hash')
-rw-r--r--libcxx/test/std/utilities/variant/variant.hash/hash.pass.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/libcxx/test/std/utilities/variant/variant.hash/hash.pass.cpp b/libcxx/test/std/utilities/variant/variant.hash/hash.pass.cpp
index 17455081300..d807a7c7e2e 100644
--- a/libcxx/test/std/utilities/variant/variant.hash/hash.pass.cpp
+++ b/libcxx/test/std/utilities/variant/variant.hash/hash.pass.cpp
@@ -105,7 +105,20 @@ void test_hash_monostate() {
}
}
+void test_hash_variant_duplicate_elements() {
+ // Test that the index of the alternative participates in the hash value.
+ using V = std::variant<std::monostate, std::monostate>;
+ using H = std::hash<V>;
+ H h{};
+ const V v1(std::in_place_index<0>);
+ const V v2(std::in_place_index<1>);
+ assert(h(v1) == h(v1));
+ assert(h(v2) == h(v2));
+ LIBCPP_ASSERT(h(v1) != h(v2));
+}
+
int main() {
test_hash_variant();
+ test_hash_variant_duplicate_elements();
test_hash_monostate();
}
OpenPOWER on IntegriCloud