[libcxx-commits] [libcxx] [libc++] [test] Improve test coverage for containers' scary.pass.cpp (PR #131550)
via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Mar 27 22:25:58 PDT 2025
================
@@ -0,0 +1,26 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+// <flat_map>
+
+// class flat_map
+// class flat_multimap
+
+// Extension: SCARY/N2913 iterator compatibility between flat_map and flat_multimap
+
+#include <flat_map>
+
+#include "test_macros.h"
+
+void test() {
+ typedef std::flat_map<int, int> M1;
+ typedef std::flat_multimap<int, int> M2;
+
+ ASSERT_SAME_TYPE(M1::iterator, M2::iterator);
+ ASSERT_SAME_TYPE(M1::const_iterator, M2::const_iterator);
----------------
halbi2 wrote:
* it prevents users from mixing std::vector::iterator with std::flat_set::iterator which is almost certainly a unintended mistake
* it allows encoding the property that the range is sorted in the iterator type, which we might be able to use for some optimizations
To be clear, no one proposes to make `std::vector::iterator` the same as `std::flat_set::iterator`. The proposal is to make `std::flat_set::iterator` the same as `std::flat_multiset::iterator`. libc++ already does make them the same for `std::set` and `std::multiset`, and for `std::unordered_set` and `std::unordered_multiset`.
https://github.com/llvm/llvm-project/pull/131550
More information about the libcxx-commits
mailing list