aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorswarmer <swarmer@yandex-team.com>2024-05-13 02:58:19 +0300
committerswarmer <swarmer@yandex-team.com>2024-05-13 03:08:01 +0300
commitb2d826f65dc1cddb9e2ebca3b0048bb0e8052340 (patch)
tree81a4b40b75c4e5a6f35f63473a6872aa2c003206
parentd6b290c39d078c44e88669fcde8da65fb4d2a03f (diff)
downloadydb-b2d826f65dc1cddb9e2ebca3b0048bb0e8052340.tar.gz
disable the vector::resize_uninitialized method for types without trivial destructor
c51f7b9d56c91c7214843f69a46c656e925841e4
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/vector8
1 files changed, 8 insertions, 0 deletions
diff --git a/contrib/libs/cxxsupp/libcxx/include/vector b/contrib/libs/cxxsupp/libcxx/include/vector
index 2b59752eed..ae4024b50b 100644
--- a/contrib/libs/cxxsupp/libcxx/include/vector
+++ b/contrib/libs/cxxsupp/libcxx/include/vector
@@ -343,6 +343,7 @@ template<class T, class charT> requires is-vector-bool-reference<T> // Since C++
#include <__type_traits/is_allocator.h>
#include <__type_traits/is_constructible.h>
#include <__type_traits/is_nothrow_move_assignable.h>
+#include <__type_traits/is_trivially_destructible.h>
#include <__type_traits/noexcept_move_assign_container.h>
#include <__type_traits/type_identity.h>
#include <__utility/exception_guard.h>
@@ -731,8 +732,12 @@ public:
#if _YNDX_LIBCXX_ENABLE_VECTOR_POD_RESIZE_UNINITIALIZED
// This function works only for POD types, otherwise memory leak may occur.
+#if _LIBCPP_STD_VER >= 20
+ void resize_uninitialized(size_type __sz) requires is_trivially_destructible_v<_Tp>;
+#else
void resize_uninitialized(size_type __sz);
#endif
+#endif
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void resize(size_type __sz);
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void resize(size_type __sz, const_reference __x);
@@ -2051,6 +2056,9 @@ vector<_Tp, _Allocator>::resize(size_type __sz)
template <class _Tp, class _Allocator>
void
vector<_Tp, _Allocator>::resize_uninitialized(size_type __sz)
+#if _LIBCPP_STD_VER >= 20
+ requires is_trivially_destructible_v<_Tp>
+#endif
{
size_type __cs = size();
if (__cs < __sz)