[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