diff options
-rw-r--r-- | libcxx/include/vector | 64 |
1 files changed, 28 insertions, 36 deletions
diff --git a/libcxx/include/vector b/libcxx/include/vector index 976bde9..b190557 100644 --- a/libcxx/include/vector +++ b/libcxx/include/vector @@ -424,11 +424,36 @@ public: #endif : __end_cap_(nullptr, __a) { } - _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI explicit vector(size_type __n); + + _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI explicit vector(size_type __n) { + auto __guard = std::__make_exception_guard(__destroy_vector(*this)); + if (__n > 0) { + __vallocate(__n); + __construct_at_end(__n); + } + __guard.__complete(); + } + #if _LIBCPP_STD_VER >= 14 - _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI explicit vector(size_type __n, const allocator_type& __a); + _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI explicit vector(size_type __n, const allocator_type& __a) + : __end_cap_(nullptr, __a) { + auto __guard = std::__make_exception_guard(__destroy_vector(*this)); + if (__n > 0) { + __vallocate(__n); + __construct_at_end(__n); + } + __guard.__complete(); + } #endif - _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI vector(size_type __n, const value_type& __x); + + _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI vector(size_type __n, const value_type& __x) { + auto __guard = std::__make_exception_guard(__destroy_vector(*this)); + if (__n > 0) { + __vallocate(__n); + __construct_at_end(__n, __x); + } + __guard.__complete(); + } template <__enable_if_t<__is_allocator<_Allocator>::value, int> = 0> _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI @@ -1126,39 +1151,6 @@ _LIBCPP_CONSTEXPR_SINCE_CXX20 void vector<_Tp, _Allocator>::__append(size_type _ } template <class _Tp, class _Allocator> -_LIBCPP_CONSTEXPR_SINCE_CXX20 vector<_Tp, _Allocator>::vector(size_type __n) { - auto __guard = std::__make_exception_guard(__destroy_vector(*this)); - if (__n > 0) { - __vallocate(__n); - __construct_at_end(__n); - } - __guard.__complete(); -} - -#if _LIBCPP_STD_VER >= 14 -template <class _Tp, class _Allocator> -_LIBCPP_CONSTEXPR_SINCE_CXX20 vector<_Tp, _Allocator>::vector(size_type __n, const allocator_type& __a) - : __end_cap_(nullptr, __a) { - auto __guard = std::__make_exception_guard(__destroy_vector(*this)); - if (__n > 0) { - __vallocate(__n); - __construct_at_end(__n); - } - __guard.__complete(); -} -#endif - -template <class _Tp, class _Allocator> -_LIBCPP_CONSTEXPR_SINCE_CXX20 vector<_Tp, _Allocator>::vector(size_type __n, const value_type& __x) { - auto __guard = std::__make_exception_guard(__destroy_vector(*this)); - if (__n > 0) { - __vallocate(__n); - __construct_at_end(__n, __x); - } - __guard.__complete(); -} - -template <class _Tp, class _Allocator> template <class _InputIterator, __enable_if_t<__has_exactly_input_iterator_category<_InputIterator>::value && is_constructible<_Tp, typename iterator_traits<_InputIterator>::reference>::value, |