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

Mark de Wever via libcxx-commits libcxx-commits at lists.llvm.org
Fri Mar 21 12:16:20 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:

Not related to this patch. How does this affect `std::vector<bool> when `vector_bool.h` is included directly and `vector` is not? I expect this can cause an ODR violation.

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


More information about the libcxx-commits mailing list