From 42cbe7a2aa2339b22bf34cb7fa69bdd856d65a60 Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Thu, 24 Jan 2019 19:09:22 +0000 Subject: [PATCH] [libcxx] Portability fix: unordered_set and unordered_multiset iterators are not required to be the same The unordered_set and unordered_multiset iterators are specified in the standard as follows: using iterator = implementation-defined; // see [container.requirements] using const_iterator = implementation-defined; // see [container.requirements] using local_iterator = implementation-defined; // see [container.requirements] using const_local_iterator = implementation-defined; // see [container.requirements] The pairs iterator/const_iterator and local_iterator/const_local_iterator are not required to be the same. The reasonable requirement would be that iterator can convert to const_iterator and local_iterator can convert to const_local_iterator. This patch weakens the check and makes the test more portable. Reviewed as https://reviews.llvm.org/D56493. Thanks to Andrey Maksimov for the patch. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@352083 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../containers/unord/iterator_difference_type.pass.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/std/containers/unord/iterator_difference_type.pass.cpp b/test/std/containers/unord/iterator_difference_type.pass.cpp index fe2a83a01..3f0b61e5f 100644 --- a/test/std/containers/unord/iterator_difference_type.pass.cpp +++ b/test/std/containers/unord/iterator_difference_type.pass.cpp @@ -51,10 +51,10 @@ void testUnorderedMap() { template void testUnorderedSet() { - static_assert((std::is_same::value), ""); - static_assert((std::is_same::value), ""); + static_assert((std::is_convertible::value), ""); + static_assert((std::is_convertible::value), ""); typedef typename Set::difference_type Diff; { typedef typename Set::iterator It;