[libcxx-commits] [libcxx] [libc++] implement std::flat_set (PR #125241)

via libcxx-commits libcxx-commits at lists.llvm.org
Fri Jan 31 08:05:56 PST 2025


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff 8035d38daab028b8da3cf2b01090b5f0ceacd695 a0f80fcd8c55154c89535488479872de34e5c8dd --extensions ,cpp,h -- libcxx/include/__flat_set/flat_set.h libcxx/include/flat_set libcxx/test/std/containers/container.adaptors/flat.set/flat.set.capacity/empty.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.capacity/empty.verify.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.capacity/max_size.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.capacity/size.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/alloc.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/assign_initializer_list.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/compare.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/containers.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/copy.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/copy_alloc.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/copy_assign.addressof.compile.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/copy_assign.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/deduct.compile.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/deduct.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/deduct_pmr.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/default.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/default_noexcept.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/dtor_noexcept.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/initializer_list.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/iter_iter.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/move.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/move_alloc.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/move_assign.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/move_assign_clears.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/move_assign_noexcept.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/move_exceptions.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/move_noexcept.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/pmr.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/range.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/sorted_container.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/sorted_initializer_list.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/sorted_iter_iter.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.erasure/erase_if.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.erasure/erase_if_exceptions.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.iterators/iterator.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.iterators/iterator_comparison.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.iterators/iterator_concept_conformance.compile.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.iterators/range_concept_conformance.compile.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.iterators/reverse_iterator.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/clear.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/emplace.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/emplace_hint.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/erase_iter.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/erase_iter_iter.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/erase_key.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/erase_key_transparent.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/extract.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_cv.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_initializer_list.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_iter_cv.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_iter_iter.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_iter_rv.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_range.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_rv.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_sorted_initializer_list.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_sorted_iter_iter.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_transparent.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/replace.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/swap_exception.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/swap_free.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/swap_member.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.observers/comp.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.operations/contains.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.operations/contains_transparent.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.operations/count.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.operations/count_transparent.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.operations/equal_range.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.operations/equal_range_transparent.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.operations/find.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.operations/find_transparent.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.operations/lower_bound.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.operations/lower_bound_transparent.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.operations/upper_bound.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/flat.set.operations/upper_bound_transparent.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/helpers.h libcxx/test/std/containers/container.adaptors/flat.set/incomplete_type.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/op_compare.pass.cpp libcxx/test/std/containers/container.adaptors/flat.set/types.compile.pass.cpp
``````````

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/libcxx/include/__flat_set/flat_set.h b/libcxx/include/__flat_set/flat_set.h
index c920632c45..4b2688ce07 100644
--- a/libcxx/include/__flat_set/flat_set.h
+++ b/libcxx/include/__flat_set/flat_set.h
@@ -831,18 +831,18 @@ template <class _Key, class _Compare, class _KeyContainer, class _Allocator>
 struct uses_allocator<flat_set<_Key, _Compare, _KeyContainer>, _Allocator>
     : bool_constant<uses_allocator_v<_KeyContainer, _Allocator>> {};
 
- template <class _Key, class _Compare, class _KeyContainer, class _Predicate>
- _LIBCPP_HIDE_FROM_ABI typename flat_set<_Key, _Compare, _KeyContainer>::size_type
- erase_if(flat_set<_Key, _Compare, _KeyContainer>& __flat_set, _Predicate __pred) {
-   auto __guard  = std::__make_exception_guard([&] { __flat_set.clear(); });
-   auto __it     = std::remove_if(__flat_set.__keys_.begin(), __flat_set.__keys_.end(), [&](const auto& e) -> bool {
-     return static_cast<bool>(__pred(e));
-   });
-   auto __res    = __flat_set.__keys_.end() - __it;
-   __flat_set.__keys_.erase(__it, __flat_set.__keys_.end());
-   __guard.__complete();
-   return __res;
- }
+template <class _Key, class _Compare, class _KeyContainer, class _Predicate>
+_LIBCPP_HIDE_FROM_ABI typename flat_set<_Key, _Compare, _KeyContainer>::size_type
+erase_if(flat_set<_Key, _Compare, _KeyContainer>& __flat_set, _Predicate __pred) {
+  auto __guard = std::__make_exception_guard([&] { __flat_set.clear(); });
+  auto __it    = std::remove_if(__flat_set.__keys_.begin(), __flat_set.__keys_.end(), [&](const auto& e) -> bool {
+    return static_cast<bool>(__pred(e));
+  });
+  auto __res   = __flat_set.__keys_.end() - __it;
+  __flat_set.__keys_.erase(__it, __flat_set.__keys_.end());
+  __guard.__complete();
+  return __res;
+}
 
 _LIBCPP_END_NAMESPACE_STD
 
diff --git a/libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/move_alloc.pass.cpp b/libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/move_alloc.pass.cpp
index fc7f68d8c9..817c37db9b 100644
--- a/libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/move_alloc.pass.cpp
+++ b/libcxx/test/std/containers/container.adaptors/flat.set/flat.set.cons/move_alloc.pass.cpp
@@ -53,7 +53,7 @@ int main(int, char**) {
     assert(m.size() == 3);
     auto keys = std::move(m).extract();
     assert(keys.get_allocator() == A(3));
-    assert(std::ranges::equal(keys, expected ));
+    assert(std::ranges::equal(keys, expected));
 
     // The original flat_set is moved-from.
     assert(std::is_sorted(mo.begin(), mo.end(), mo.value_comp()));
@@ -63,7 +63,7 @@ int main(int, char**) {
   }
   {
     // moved-from object maintains invariant if one of underlying container does not clear after move
-    using M = std::flat_set<int, std::less<>,  CopyOnlyVector<int>>;
+    using M = std::flat_set<int, std::less<>, CopyOnlyVector<int>>;
     M m1    = M({1, 2, 3});
     M m2(std::move(m1), std::allocator<int>{});
     assert(m2.size() == 3);
diff --git a/libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_initializer_list.pass.cpp b/libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_initializer_list.pass.cpp
index 7381514a70..c47a6b4ff5 100644
--- a/libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_initializer_list.pass.cpp
+++ b/libcxx/test/std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_initializer_list.pass.cpp
@@ -24,11 +24,11 @@
 
 template <class KeyContainer>
 void test() {
-  using Key   = typename KeyContainer::value_type;
-  using M     = std::flat_set<Key, std::less<Key>, KeyContainer>;
-  using V     = typename M::value_type;
+  using Key = typename KeyContainer::value_type;
+  using M   = std::flat_set<Key, std::less<Key>, KeyContainer>;
+  using V   = typename M::value_type;
 
-  M m = {1,1,1,3,3,3};
+  M m = {1, 1, 1, 3, 3, 3};
   m.insert({
       4,
       4,

``````````

</details>


https://github.com/llvm/llvm-project/pull/125241


More information about the libcxx-commits mailing list