[libcxx-commits] [libcxx] [WIP] Specialize std::search for char (PR #130476)

via libcxx-commits libcxx-commits at lists.llvm.org
Sun Mar 9 00:54:33 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 cf3aa06c1627a6e6606b729fac344fefaeb0ba85 37efcfbcc0b4a9040adfd05cc6233531b232312e --extensions cpp,h -- libcxx/include/__algorithm/search.h libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search.pass.cpp
``````````

</details>

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

``````````diff
diff --git a/libcxx/include/__algorithm/search.h b/libcxx/include/__algorithm/search.h
index f9c2f151e4..db62dc46ee 100644
--- a/libcxx/include/__algorithm/search.h
+++ b/libcxx/include/__algorithm/search.h
@@ -20,8 +20,8 @@
 #include <__string/char_traits.h>
 #include <__type_traits/enable_if.h>
 #include <__type_traits/invoke.h>
-#include <__type_traits/is_same.h>
 #include <__type_traits/is_callable.h>
+#include <__type_traits/is_same.h>
 #include <__utility/pair.h>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
@@ -161,17 +161,18 @@ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_Iter1, _Iter1> __searc
   return std::__search_forward_impl<_ClassicAlgPolicy>(__first1, __last1, __first2, __last2, __pred, __proj1, __proj2);
 }
 
-template <class _Iter1,
-          class _Sent1,
-          class _Iter2,
-          class _Sent2,
-          __enable_if_t<__has_random_access_iterator_category<_Iter1>::value &&
-                            __has_random_access_iterator_category<_Iter2>::value &&
-                            is_same<typename iterator_traits<_Iter1>::value_type, char>::value &&
-                            is_same<typename iterator_traits<_Iter2>::value_type, typename iterator_traits<_Iter2>::value_type>::value,
-                        int> = 0>
-_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_Iter1, _Iter1> search(
-    _Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2) {
+template <
+    class _Iter1,
+    class _Sent1,
+    class _Iter2,
+    class _Sent2,
+    __enable_if_t<
+        __has_random_access_iterator_category<_Iter1>::value && __has_random_access_iterator_category<_Iter2>::value &&
+            is_same<typename iterator_traits<_Iter1>::value_type, char>::value &&
+            is_same<typename iterator_traits<_Iter2>::value_type, typename iterator_traits<_Iter2>::value_type>::value,
+        int> = 0>
+_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_Iter1, _Iter1>
+search(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2) {
   auto __size2 = __last2 - __first2;
   if (__size2 == 0)
     return std::make_pair(__first1, __first1);
diff --git a/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search.pass.cpp b/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search.pass.cpp
index 8320f3d13e..d65e7f04a7 100644
--- a/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search.pass.cpp
+++ b/libcxx/test/std/algorithms/alg.nonmodifying/alg.search/search.pass.cpp
@@ -117,14 +117,14 @@ adl_test()
 }
 
 void test_str() {
-    const char* s = "abcde";
-    const char* f = "abc";
-    const char* l = "cde";
-    assert(std::search(s, s+5, f, f+3) == s);
-    assert(std::search(s, s+5, l, l+3) == s+2);
-    assert(std::search(s, s+5, s, s+1) == s);
-    assert(std::search(s, s+5, s, s+5) == s);
-    assert(std::search(s, s+5, s+5, s+5) == s+5);
+  const char* s = "abcde";
+  const char* f = "abc";
+  const char* l = "cde";
+  assert(std::search(s, s + 5, f, f + 3) == s);
+  assert(std::search(s, s + 5, l, l + 3) == s + 2);
+  assert(std::search(s, s + 5, s, s + 1) == s);
+  assert(std::search(s, s + 5, s, s + 5) == s);
+  assert(std::search(s, s + 5, s + 5, s + 5) == s + 5);
 }
 
 int main(int, char**)

``````````

</details>


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


More information about the libcxx-commits mailing list