From ea5cabb27f480d57f0f96037433e18c25f52d06b Mon Sep 17 00:00:00 2001 From: LeonineKing1199 Date: Tue, 7 Dec 2021 10:48:09 -0800 Subject: [PATCH] Update test to use two implicitly convertible types (const and non-const iterators) and the associated compile-time tests --- test/unordered/transparent_tests.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/test/unordered/transparent_tests.cpp b/test/unordered/transparent_tests.cpp index 50ec0ee3..b52f31d1 100644 --- a/test/unordered/transparent_tests.cpp +++ b/test/unordered/transparent_tests.cpp @@ -521,6 +521,14 @@ template void test_non_transparent_equal_range() } template struct convertible_to_iterator +{ + operator typename UnorderedMap::iterator() + { + return typename UnorderedMap::iterator(); + } +}; + +template struct convertible_to_const_iterator { operator typename UnorderedMap::const_iterator() { @@ -539,6 +547,15 @@ transparent_unordered_map::iterator erase_overload_compile_test() { convertible_to_iterator c; transparent_unordered_map map; + transparent_unordered_map::iterator pos = map.begin(); + pos = c; + return map.erase(c); +} + +transparent_unordered_map::const_iterator erase_const_overload_compile_test() +{ + convertible_to_const_iterator c; + transparent_unordered_map map; transparent_unordered_map::const_iterator pos = map.begin(); pos = c; return map.erase(c); @@ -624,9 +641,9 @@ template void test_non_transparent_erase() // still invoke the correct iterator overloads when the type is implicitly // convertible // -transparent_unordered_map::node_type extract_overload_compile_test() +transparent_unordered_map::node_type extract_const_overload_compile_test() { - convertible_to_iterator c; + convertible_to_const_iterator c; transparent_unordered_map map; transparent_unordered_map::const_iterator pos = map.begin(); pos = c;