[clang-tools-extra] [llvm] [llvm][ADT] Add wrapper to `std::search` and `std::adjacent_find` (PR #171666)

via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 10 12:42:11 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 origin/main HEAD --extensions cpp,h -- clang-tools-extra/clang-tidy/llvm/UseRangesCheck.cpp llvm/include/llvm/ADT/STLExtras.h llvm/unittests/ADT/STLExtrasTest.cpp --diff_from_common_commit
``````````

:warning:
The reproduction instructions above might return results for more than one PR
in a stack if you are using a stacked PR workflow. You can limit the results by
changing `origin/main` to the base branch/commit you want to compare against.
:warning:

</details>

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

``````````diff
diff --git a/clang-tools-extra/clang-tidy/llvm/UseRangesCheck.cpp b/clang-tools-extra/clang-tidy/llvm/UseRangesCheck.cpp
index 420cf63c0..5e7392b09 100644
--- a/clang-tools-extra/clang-tidy/llvm/UseRangesCheck.cpp
+++ b/clang-tools-extra/clang-tidy/llvm/UseRangesCheck.cpp
@@ -57,19 +57,19 @@ utils::UseRangesCheck::ReplacerMap UseRangesCheck::getReplacerMap() const {
 
   // Single range algorithms
   AddStdToLLVM(llvm::makeIntrusiveRefCnt<StdToLLVMReplacer>(SingleSig),
-               {"all_of",      "any_of",
-                "none_of",     "for_each",
-                "find",        "find_if",
-                "find_if_not", "fill",
-                "count",       "count_if",
-                "copy",        "copy_if",
-                "transform",   "replace",
-                "remove_if",   "stable_sort",
-                "partition",   "partition_point",
-                "is_sorted",   "min_element",
-                "max_element", "binary_search",
-                "lower_bound", "upper_bound",
-                "unique",      "uninitialized_copy",
+               {"all_of",       "any_of",
+                "none_of",      "for_each",
+                "find",         "find_if",
+                "find_if_not",  "fill",
+                "count",        "count_if",
+                "copy",         "copy_if",
+                "transform",    "replace",
+                "remove_if",    "stable_sort",
+                "partition",    "partition_point",
+                "is_sorted",    "min_element",
+                "max_element",  "binary_search",
+                "lower_bound",  "upper_bound",
+                "unique",       "uninitialized_copy",
                 "adjacent_find"});
 
   // Two range algorithms
diff --git a/llvm/include/llvm/ADT/STLExtras.h b/llvm/include/llvm/ADT/STLExtras.h
index 9f9e7178a..7e98d9a58 100644
--- a/llvm/include/llvm/ADT/STLExtras.h
+++ b/llvm/include/llvm/ADT/STLExtras.h
@@ -1791,8 +1791,7 @@ OutputIt copy_if(R &&Range, OutputIt Out, UnaryPredicate P) {
 }
 
 /// Wrapper for std::search.
-template <typename R1, typename R2>
-auto search(R1 &&Range1, R2 &&Range2) {
+template <typename R1, typename R2> auto search(R1 &&Range1, R2 &&Range2) {
   return std::search(adl_begin(Range1), adl_end(Range1), adl_begin(Range2),
                      adl_end(Range2));
 }
@@ -1805,16 +1804,14 @@ auto search(R1 &&Range1, R2 &&Range2, BinaryPredicate P) {
 }
 
 /// Wrapper for std::adjacent_find.
-template <typename R>
-auto adjacent_find(R &&Range) {
+template <typename R> auto adjacent_find(R &&Range) {
   return std::adjacent_find(adl_begin(Range), adl_end(Range));
 }
 
 /// Wrapper for std::adjacent_find.
 template <typename R, typename BinaryPredicate>
 auto adjacent_find(R &&Range, BinaryPredicate P) {
-  return std::adjacent_find(adl_begin(Range), adl_end(Range),
-                            P);
+  return std::adjacent_find(adl_begin(Range), adl_end(Range), P);
 }
 
 /// Return the single value in \p Range that satisfies
diff --git a/llvm/unittests/ADT/STLExtrasTest.cpp b/llvm/unittests/ADT/STLExtrasTest.cpp
index 35378a699..b5e5d619b 100644
--- a/llvm/unittests/ADT/STLExtrasTest.cpp
+++ b/llvm/unittests/ADT/STLExtrasTest.cpp
@@ -1770,14 +1770,14 @@ TEST(STLExtrasTest, Search) {
   std::vector<int> Haystack2 = {10, 20, 30, 40, 50};
   std::vector<int> Needle5 = {20, 30};
   std::vector<int> Needle6 = {200, 300};
-  auto It8 = llvm::search(Haystack2, Needle5,
-                          [](int a, int b) { return a == b; });
+  auto It8 =
+      llvm::search(Haystack2, Needle5, [](int a, int b) { return a == b; });
   EXPECT_NE(It8, Haystack2.end());
   EXPECT_EQ(It8, Haystack2.begin() + 1);
 
   // Test with predicate that doesn't match
-  auto It9 = llvm::search(Haystack2, Needle6,
-                          [](int a, int b) { return a == b; });
+  auto It9 =
+      llvm::search(Haystack2, Needle6, [](int a, int b) { return a == b; });
   EXPECT_EQ(It9, Haystack2.end());
 
   // Test with StringRef
@@ -1835,7 +1835,8 @@ TEST(STLExtrasTest, AdjacentFind) {
   auto It6 = llvm::adjacent_find(Single);
   EXPECT_EQ(It6, Single.end());
 
-  // Test with predicate version - finding adjacent elements that satisfy predicate
+  // Test with predicate version - finding adjacent elements that satisfy
+  // predicate
   std::vector<int> V5 = {1, 2, 4, 3, 5, 6};
   auto It7 = llvm::adjacent_find(V5, [](int a, int b) { return a > b; });
   EXPECT_NE(It7, V5.end());

``````````

</details>


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


More information about the llvm-commits mailing list