[libcxx-commits] [libcxx] [libc++] Add the __is_replaceable type trait (PR #132408)

Mark de Wever via libcxx-commits libcxx-commits at lists.llvm.org
Thu Mar 27 10:43:58 PDT 2025


================
@@ -120,6 +121,10 @@ class _LIBCPP_TEMPLATE_VIS vector {
       __libcpp_is_trivially_relocatable<pointer>::value && __libcpp_is_trivially_relocatable<allocator_type>::value,
       vector,
       void>;
+  using __replaceable _LIBCPP_NODEBUG =
+      __conditional_t<__is_replaceable<pointer>::value && __container_allocator_is_replaceable<__alloc_traits>::value,
+                      vector,
+                      void>;
----------------
mordante wrote:

The issue I see is that the value of `__replaceable` differs. The TU1 does not define it for `std::vector<bool>` while TU2 does. This due to the place where `__replaceable` is defined. This definition is not included by the header "__vector/vector_bool.h".

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


More information about the libcxx-commits mailing list