[libcxx-commits] [libcxx] [String] Allow fancy pointer as pointer type of basic_string allocator (PR #191023)
via libcxx-commits
libcxx-commits at lists.llvm.org
Wed Apr 8 14:42:45 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 ,h,cpp -- libcxx/include/string libcxx/test/libcxx/strings/basic.string/alignof.compile.pass.cpp libcxx/test/libcxx/strings/basic.string/sizeof.compile.pass.cpp libcxx/test/libcxx/strings/basic.string/string.access/assert.back.pass.cpp libcxx/test/libcxx/strings/basic.string/string.access/assert.cback.pass.cpp libcxx/test/libcxx/strings/basic.string/string.access/assert.cfront.pass.cpp libcxx/test/libcxx/strings/basic.string/string.access/assert.cindex.pass.cpp libcxx/test/libcxx/strings/basic.string/string.access/assert.front.pass.cpp libcxx/test/libcxx/strings/basic.string/string.access/assert.index.pass.cpp libcxx/test/libcxx/strings/basic.string/string.cons/copy_shrunk_long.pass.cpp libcxx/test/libcxx/strings/basic.string/string.iterators/assert.iterator.add.pass.cpp libcxx/test/libcxx/strings/basic.string/string.iterators/assert.iterator.decrement.pass.cpp libcxx/test/libcxx/strings/basic.string/string.iterators/assert.iterator.dereference.pass.cpp libcxx/test/libcxx/strings/basic.string/string.iterators/assert.iterator.increment.pass.cpp libcxx/test/libcxx/strings/basic.string/string.iterators/assert.iterator.index.pass.cpp libcxx/test/libcxx/strings/basic.string/string.iterators/debug.iterator.compare.pass.cpp libcxx/test/libcxx/strings/basic.string/string.iterators/debug.iterator.subtract.pass.cpp libcxx/test/libcxx/strings/basic.string/string.modifiers/assert.erase_iter.null.pass.cpp libcxx/test/libcxx/strings/basic.string/string.modifiers/assert.pop_back.pass.cpp libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.erase.iter.pass.cpp libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.erase.iter_iter.pass.cpp libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.insert.iter_char.pass.cpp libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.insert.iter_iter_iter.pass.cpp libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.insert.iter_size_char.pass.cpp libcxx/test/std/containers/from_range_helpers.h libcxx/test/std/containers/insert_range_helpers.h libcxx/test/std/strings/basic.string.hash/enabled_hashes.pass.cpp libcxx/test/std/strings/basic.string/string.access/at.pass.cpp libcxx/test/std/strings/basic.string/string.access/back.pass.cpp libcxx/test/std/strings/basic.string/string.access/front.pass.cpp libcxx/test/std/strings/basic.string/string.access/index.pass.cpp libcxx/test/std/strings/basic.string/string.capacity/capacity.pass.cpp libcxx/test/std/strings/basic.string/string.capacity/clear.pass.cpp libcxx/test/std/strings/basic.string/string.capacity/empty.pass.cpp libcxx/test/std/strings/basic.string/string.capacity/length.pass.cpp libcxx/test/std/strings/basic.string/string.capacity/max_size.pass.cpp libcxx/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp libcxx/test/std/strings/basic.string/string.capacity/reserve.pass.cpp libcxx/test/std/strings/basic.string/string.capacity/reserve_size.pass.cpp libcxx/test/std/strings/basic.string/string.capacity/resize_size.pass.cpp libcxx/test/std/strings/basic.string/string.capacity/resize_size_char.pass.cpp libcxx/test/std/strings/basic.string/string.capacity/shrink_to_fit.pass.cpp libcxx/test/std/strings/basic.string/string.capacity/size.pass.cpp libcxx/test/std/strings/basic.string/string.cons/T_size_size.pass.cpp libcxx/test/std/strings/basic.string/string.cons/alloc.pass.cpp libcxx/test/std/strings/basic.string/string.cons/char_assignment.pass.cpp libcxx/test/std/strings/basic.string/string.cons/copy.pass.cpp libcxx/test/std/strings/basic.string/string.cons/copy_alloc.pass.cpp libcxx/test/std/strings/basic.string/string.cons/copy_assignment.pass.cpp libcxx/test/std/strings/basic.string/string.cons/default.pass.cpp libcxx/test/std/strings/basic.string/string.cons/dtor.pass.cpp libcxx/test/std/strings/basic.string/string.cons/initializer_list.pass.cpp libcxx/test/std/strings/basic.string/string.cons/initializer_list_assignment.pass.cpp libcxx/test/std/strings/basic.string/string.cons/iter_alloc.pass.cpp libcxx/test/std/strings/basic.string/string.cons/iter_alloc_deduction.pass.cpp libcxx/test/std/strings/basic.string/string.cons/move.pass.cpp libcxx/test/std/strings/basic.string/string.cons/move_alloc.pass.cpp libcxx/test/std/strings/basic.string/string.cons/move_assign_noexcept.pass.cpp libcxx/test/std/strings/basic.string/string.cons/move_assignment.pass.cpp libcxx/test/std/strings/basic.string/string.cons/move_noexcept.pass.cpp libcxx/test/std/strings/basic.string/string.cons/pointer_alloc.pass.cpp libcxx/test/std/strings/basic.string/string.cons/pointer_assignment.pass.cpp libcxx/test/std/strings/basic.string/string.cons/pointer_size_alloc.pass.cpp libcxx/test/std/strings/basic.string/string.cons/size_char_alloc.pass.cpp libcxx/test/std/strings/basic.string/string.cons/string_view.pass.cpp libcxx/test/std/strings/basic.string/string.cons/string_view_assignment.pass.cpp libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.pass.cpp libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.pass.cpp libcxx/test/std/strings/basic.string/string.cons/substr.pass.cpp libcxx/test/std/strings/basic.string/string.cons/substr_rvalue.pass.cpp libcxx/test/std/strings/basic.string/string.iterators/begin.pass.cpp libcxx/test/std/strings/basic.string/string.iterators/cbegin.pass.cpp libcxx/test/std/strings/basic.string/string.iterators/cend.pass.cpp libcxx/test/std/strings/basic.string/string.iterators/crbegin.pass.cpp libcxx/test/std/strings/basic.string/string.iterators/crend.pass.cpp libcxx/test/std/strings/basic.string/string.iterators/end.pass.cpp libcxx/test/std/strings/basic.string/string.iterators/rbegin.pass.cpp libcxx/test/std/strings/basic.string/string.iterators/rend.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_append/T_size_size.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_append/initializer_list.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer_size.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_append/push_back.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_append/size_char.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_append/string.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_append/string_size_size.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_append/string_view.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_assign/T_size_size.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_assign/initializer_list.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_assign/pointer.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_assign/pointer_size.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_assign/rv_string.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_assign/size_char.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string_size_size.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string_view.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_copy/copy.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_erase/iter.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_erase/iter_iter.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_erase/pop_back.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_erase/size_size.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_char.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_initializer_list.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_size_char.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_T_size_size.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer_size.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_size_char.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_string.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_string_size_size.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_insert/string_view.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/char.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/initializer_list.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/pointer.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/string.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_initializer_list.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer_size.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_size_char.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string_view.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_T_size_size.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer_size.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_size_char.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_size_size.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_view.pass.cpp libcxx/test/std/strings/basic.string/string.modifiers/string_swap/swap.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim_rv.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_rv.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string.io/stream_extract.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string.io/stream_insert.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string.special/swap.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_op\!=/pointer_string.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_op\!=/string_pointer.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_op\!=/string_string.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_op\!=/string_string_view.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_op\!=/string_view_string.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/char_string.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/pointer_string.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_char.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_pointer.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_string.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/pointer_string.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_pointer.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string_view.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_view_string.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/pointer_string.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_pointer.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string_view.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_view_string.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/pointer_string.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_pointer.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string_view.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_view_string.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/pointer_string.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_pointer.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string_view.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_view_string.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/pointer_string.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_pointer.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string_view.pass.cpp libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_view_string.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string.accessors/c_str.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string.accessors/data.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string.accessors/get_allocator.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_compare/pointer.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_T_size_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string_size_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string_view.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_compare/string.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_compare/string_view.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/char_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_view_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/char_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/string_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/string_view_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/char_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_view_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/char_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/string_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/string_view_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find/char_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find/pointer_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find/pointer_size_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find/string_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_find/string_view_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_rfind/char_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_rfind/pointer_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_rfind/pointer_size_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_rfind/string_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_rfind/string_view_size.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_substr/substr.pass.cpp libcxx/test/std/strings/basic.string/string.ops/string_substr/substr_rvalue.pass.cpp libcxx/test/std/strings/basic.string/string.require/contiguous.pass.cpp libcxx/test/std/strings/basic.string/types.pass.cpp libcxx/test/std/strings/strings.erasure/erase.pass.cpp libcxx/test/std/strings/strings.erasure/erase_if.pass.cpp libcxx/test/support/test_allocator.h --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 afa57af70..0160c94c8 100644
--- a/libcxx/include/string
+++ b/libcxx/include/string
@@ -2117,16 +2117,16 @@ private:
_LIBCPP_CONSTEXPR _LIBCPP_HIDE_FROM_ABI static bool __fits_in_sso(size_type __sz) { return __sz < __min_cap; }
- // If __long is not trivially constructible (this occurs if the pointer type inside __long is not trivially constructible)
- // then the lifetime of __l must be explicitly started with std::__construct_at before it can be assigned to. If __long is
- // trivially constructible, then the lifetime of __l can be implicitly started with a simple assignment and therefore does
- // not need to be explicitly initialised here.
+ // If __long is not trivially constructible (this occurs if the pointer type inside __long is not trivially
+ // constructible) then the lifetime of __l must be explicitly started with std::__construct_at before it can be
+ // assigned to. If __long is trivially constructible, then the lifetime of __l can be implicitly started with a simple
+ // assignment and therefore does not need to be explicitly initialised here.
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void __begin_long_lifetime() {
-#if _LIBCPP_STD_VER >= 17
- if constexpr(!__is_trivially_constructible(__long)) {
-#else
+# if _LIBCPP_STD_VER >= 17
+ if constexpr (!__is_trivially_constructible(__long)) {
+# else
if (!__is_trivially_constructible(__long)) {
-#endif // _LIBCPP_STD_VER >= 17
+# endif // _LIBCPP_STD_VER >= 17
std::__construct_at(std::addressof(__rep_.__l));
}
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/191023
More information about the libcxx-commits
mailing list