diff options
author | Eric Fiselier <eric@efcs.ca> | 2016-12-02 23:38:31 +0000 |
---|---|---|
committer | Eric Fiselier <eric@efcs.ca> | 2016-12-02 23:38:31 +0000 |
commit | 918f32fc7b2f4e3c7f3b76db941822aa8ffb5197 (patch) | |
tree | 88dcb41c643f7fdb33f33ee1051e1278ef8f4ea8 /libcxx/test/std/utilities/variant/variant.hash | |
parent | 75453b057b6b76889ff3a5bca99f8099c628b389 (diff) | |
download | bcm5719-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.cpp | 13 |
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(); } |