@@ -438,10 +438,22 @@ class _LIBCPP_TEMPLATE_VIS vector<bool, _Allocator> {
438
438
return (__new_size + (__bits_per_word - 1 )) & ~((size_type)__bits_per_word - 1 );
439
439
}
440
440
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 size_type __recommend (size_type __new_size) const ;
441
- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void __construct_at_end (size_type __n, bool __x);
441
+
442
+ // Default constructs __n objects starting at __end_
443
+ // Precondition: __n > 0
444
+ // Precondition: size() + __n <= capacity()
445
+ // Postcondition: size() == size() + __n
446
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void __construct_at_end (size_type __n, bool __x) {
447
+ std::fill_n (end (), __n, __x);
448
+ this ->__size_ += __n;
449
+ }
442
450
template <class _InputIterator , class _Sentinel >
443
451
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void
444
- __construct_at_end (_InputIterator __first, _Sentinel __last, size_type __n);
452
+ __construct_at_end (_InputIterator __first, _Sentinel __last, size_type __n) {
453
+ std::__copy (__first, __last, end ());
454
+ this ->__size_ += __n;
455
+ }
456
+
445
457
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void __append (size_type __n, const_reference __x);
446
458
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 reference __make_ref (size_type __pos) _NOEXCEPT {
447
459
return reference (__begin_ + __pos / __bits_per_word, __storage_type (1 ) << __pos % __bits_per_word);
@@ -530,39 +542,6 @@ vector<bool, _Allocator>::__recommend(size_type __new_size) const {
530
542
return std::max (2 * __cap, __align_it (__new_size));
531
543
}
532
544
533
- // Default constructs __n objects starting at __end_
534
- // Precondition: __n > 0
535
- // Precondition: size() + __n <= capacity()
536
- // Postcondition: size() == size() + __n
537
- template <class _Allocator >
538
- inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void
539
- vector<bool , _Allocator>::__construct_at_end(size_type __n, bool __x) {
540
- size_type __old_size = this ->__size_ ;
541
- this ->__size_ += __n;
542
- if (__old_size == 0 || ((__old_size - 1 ) / __bits_per_word) != ((this ->__size_ - 1 ) / __bits_per_word)) {
543
- if (this ->__size_ <= __bits_per_word)
544
- this ->__begin_ [0 ] = __storage_type (0 );
545
- else
546
- this ->__begin_ [(this ->__size_ - 1 ) / __bits_per_word] = __storage_type (0 );
547
- }
548
- std::fill_n (__make_iter (__old_size), __n, __x);
549
- }
550
-
551
- template <class _Allocator >
552
- template <class _InputIterator , class _Sentinel >
553
- _LIBCPP_CONSTEXPR_SINCE_CXX20 void
554
- vector<bool , _Allocator>::__construct_at_end(_InputIterator __first, _Sentinel __last, size_type __n) {
555
- size_type __old_size = this ->__size_ ;
556
- this ->__size_ += __n;
557
- if (__old_size == 0 || ((__old_size - 1 ) / __bits_per_word) != ((this ->__size_ - 1 ) / __bits_per_word)) {
558
- if (this ->__size_ <= __bits_per_word)
559
- this ->__begin_ [0 ] = __storage_type (0 );
560
- else
561
- this ->__begin_ [(this ->__size_ - 1 ) / __bits_per_word] = __storage_type (0 );
562
- }
563
- std::__copy (__first, __last, __make_iter (__old_size));
564
- }
565
-
566
545
template <class _Allocator >
567
546
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 vector<bool , _Allocator>::vector()
568
547
_NOEXCEPT_ (is_nothrow_default_constructible<allocator_type>::value)
0 commit comments