[libcxx-commits] [libcxx] [DRAFT] [libc++] Add `__is_transparently_comparable_v` specializations for `basic_string_view` (PR #195871)

via libcxx-commits libcxx-commits at lists.llvm.org
Tue May 5 08:27:19 PDT 2026


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 -- libcxx/include/string libcxx/include/string_view libcxx/test/libcxx/type_traits/is_transparently_comparable.compile.pass.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/libcxx/include/string b/libcxx/include/string
index 82deee908..1b3459752 100644
--- a/libcxx/include/string
+++ b/libcxx/include/string
@@ -2600,27 +2600,25 @@ inline const bool __is_transparently_comparable_v<_Comparator, _CharT[_Np], basi
     __is_transparently_comparable_v<_Comparator, basic_string<_CharT, _Traits, _Alloc>, const _CharT*>;
 
 template <class _Comparator, class _CharT, class _Traits, class _Alloc>
-inline const bool
-    __is_transparently_comparable_v<_Comparator,
-                                   basic_string<_CharT, _Traits, _Alloc>,
-                                   basic_string_view<_CharT, _Traits> > =
-        __desugars_to_v<__less_tag,
-                        _Comparator,
-                        basic_string<_CharT, _Traits, _Alloc>,
-                        basic_string<_CharT, _Traits, _Alloc> > ||
-        __desugars_to_v<__greater_tag,
-                        _Comparator,
-                        basic_string<_CharT, _Traits, _Alloc>,
-                        basic_string<_CharT, _Traits, _Alloc> >;
+inline const bool __is_transparently_comparable_v<_Comparator,
+                                                  basic_string<_CharT, _Traits, _Alloc>,
+                                                  basic_string_view<_CharT, _Traits> > =
+    __desugars_to_v<__less_tag,
+                    _Comparator,
+                    basic_string<_CharT, _Traits, _Alloc>,
+                    basic_string<_CharT, _Traits, _Alloc> > ||
+    __desugars_to_v<__greater_tag,
+                    _Comparator,
+                    basic_string<_CharT, _Traits, _Alloc>,
+                    basic_string<_CharT, _Traits, _Alloc> >;
 
 template <class _Comparator, class _CharT, class _Traits, class _Alloc>
-inline const bool
+inline const bool __is_transparently_comparable_v<_Comparator,
+                                                  basic_string_view<_CharT, _Traits>,
+                                                  basic_string<_CharT, _Traits, _Alloc> > =
     __is_transparently_comparable_v<_Comparator,
-                                   basic_string_view<_CharT, _Traits>,
-                                   basic_string<_CharT, _Traits, _Alloc> > =
-        __is_transparently_comparable_v<_Comparator,
-                                       basic_string<_CharT, _Traits, _Alloc>,
-                                       basic_string_view<_CharT, _Traits> >;
+                                    basic_string<_CharT, _Traits, _Alloc>,
+                                    basic_string_view<_CharT, _Traits> >;
 
 #  if _LIBCPP_STD_VER >= 17
 template <class _InputIterator,
diff --git a/libcxx/include/string_view b/libcxx/include/string_view
index 0ea8b5f39..6dc3af94b 100644
--- a/libcxx/include/string_view
+++ b/libcxx/include/string_view
@@ -234,8 +234,8 @@ namespace std {
 #  include <__ranges/enable_view.h>
 #  include <__ranges/size.h>
 #  include <__string/char_traits.h>
-#  include <__type_traits/is_array.h>
 #  include <__type_traits/desugars_to.h>
+#  include <__type_traits/is_array.h>
 #  include <__type_traits/is_convertible.h>
 #  include <__type_traits/is_same.h>
 #  include <__type_traits/is_standard_layout.h>
diff --git a/libcxx/test/libcxx/type_traits/is_transparently_comparable.compile.pass.cpp b/libcxx/test/libcxx/type_traits/is_transparently_comparable.compile.pass.cpp
index 870a77cf3..d02f5713c 100644
--- a/libcxx/test/libcxx/type_traits/is_transparently_comparable.compile.pass.cpp
+++ b/libcxx/test/libcxx/type_traits/is_transparently_comparable.compile.pass.cpp
@@ -34,26 +34,22 @@ static_assert(
     "");
 
 // basic_string_view with char pointers/arrays
-static_assert(
-    std::__is_transparently_comparable_v<std::less<std::string_view>, std::string_view, const char*>, "");
+static_assert(std::__is_transparently_comparable_v<std::less<std::string_view>, std::string_view, const char*>, "");
 static_assert(std::__is_transparently_comparable_v<std::less<std::string_view>, std::string_view, char*>, "");
 static_assert(std::__is_transparently_comparable_v<std::less<std::string_view>, std::string_view, char[5]>, "");
 
-static_assert(
-    std::__is_transparently_comparable_v<std::less<std::string_view>, const char*, std::string_view>, "");
+static_assert(std::__is_transparently_comparable_v<std::less<std::string_view>, const char*, std::string_view>, "");
 static_assert(std::__is_transparently_comparable_v<std::less<std::string_view>, char*, std::string_view>, "");
 static_assert(std::__is_transparently_comparable_v<std::less<std::string_view>, char[5], std::string_view>, "");
 
-static_assert(
-    !std::__is_transparently_comparable_v<std::less<std::reference_wrapper<std::string_view> >,
-                                          std::string_view,
-                                          const char*>,
-    "");
-static_assert(
-    !std::__is_transparently_comparable_v<std::less<std::reference_wrapper<std::string_view> >,
-                                          const char*,
-                                          std::string_view>,
-    "");
+static_assert(!std::__is_transparently_comparable_v<std::less<std::reference_wrapper<std::string_view> >,
+                                                    std::string_view,
+                                                    const char*>,
+              "");
+static_assert(!std::__is_transparently_comparable_v<std::less<std::reference_wrapper<std::string_view> >,
+                                                    const char*,
+                                                    std::string_view>,
+              "");
 
 // Cross-type: basic_string key with basic_string_view argument
 static_assert(std::__is_transparently_comparable_v<std::less<std::string>, std::string, std::string_view>, "");

``````````

</details>


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


More information about the libcxx-commits mailing list