diff options
author | swarmer <swarmer@yandex-team.com> | 2024-05-13 02:58:19 +0300 |
---|---|---|
committer | swarmer <swarmer@yandex-team.com> | 2024-05-13 03:08:01 +0300 |
commit | b2d826f65dc1cddb9e2ebca3b0048bb0e8052340 (patch) | |
tree | 81a4b40b75c4e5a6f35f63473a6872aa2c003206 | |
parent | d6b290c39d078c44e88669fcde8da65fb4d2a03f (diff) | |
download | ydb-b2d826f65dc1cddb9e2ebca3b0048bb0e8052340.tar.gz |
disable the vector::resize_uninitialized method for types without trivial destructor
c51f7b9d56c91c7214843f69a46c656e925841e4
-rw-r--r-- | contrib/libs/cxxsupp/libcxx/include/vector | 8 |
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) |