[libcxx-commits] [libcxx] [libcxx] adds size-based `__split_buffer` representation to unstable ABI (PR #139632)

Christopher Di Bella via libcxx-commits libcxx-commits at lists.llvm.org
Tue May 27 11:09:29 PDT 2025


================
@@ -78,23 +80,260 @@ public:
                       __split_buffer,
                       void>;
 
-  pointer __first_;
-  pointer __begin_;
-  pointer __end_;
-  _LIBCPP_COMPRESSED_PAIR(pointer, __cap_, allocator_type, __alloc_);
+  struct __data {
+    pointer __first_ = nullptr;
+    pointer __begin_ = nullptr;
----------------
cjdb wrote:

I don't think so, or at least, not while `vector` uses it. `vector` uses `__begin_` for its operations, and only refers to `__first` in two places (both swaps). It would be an interesting thing to explore as a potential `deque` optimisation, if we were to drop the `vector` dependency.

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


More information about the libcxx-commits mailing list