Skip to content

Commit 3f3fe89

Browse files
Add [[clang::lifetimebound]] to numerous functions in libc++ include headers
1 parent a78861f commit 3f3fe89

25 files changed

+601
-601
lines changed

libcxx/include/__bit_reference

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -609,10 +609,10 @@ struct __bit_array {
609609
std::__construct_at(__word_ + __i, 0);
610610
}
611611
}
612-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 iterator begin() {
612+
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 iterator begin() _LIBCPP_LIFETIMEBOUND {
613613
return iterator(pointer_traits<__storage_pointer>::pointer_to(__word_[0]), 0);
614614
}
615-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 iterator end() {
615+
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 iterator end() _LIBCPP_LIFETIMEBOUND {
616616
return iterator(pointer_traits<__storage_pointer>::pointer_to(__word_[0]) + __size_ / __bits_per_word,
617617
static_cast<unsigned>(__size_ % __bits_per_word));
618618
}

libcxx/include/__expected/expected.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -714,15 +714,15 @@ class expected : private __expected_base<_Tp, _Err> {
714714

715715
template <class... _Args>
716716
requires is_nothrow_constructible_v<_Tp, _Args...>
717-
_LIBCPP_HIDE_FROM_ABI constexpr _Tp& emplace(_Args&&... __args) noexcept {
717+
_LIBCPP_HIDE_FROM_ABI constexpr _Tp& emplace(_Args&&... __args) noexcept _LIBCPP_LIFETIMEBOUND {
718718
this->__destroy();
719719
this->__construct(in_place, std::forward<_Args>(__args)...);
720720
return this->__val();
721721
}
722722

723723
template <class _Up, class... _Args>
724724
requires is_nothrow_constructible_v<_Tp, initializer_list<_Up>&, _Args...>
725-
_LIBCPP_HIDE_FROM_ABI constexpr _Tp& emplace(initializer_list<_Up> __il, _Args&&... __args) noexcept {
725+
_LIBCPP_HIDE_FROM_ABI constexpr _Tp& emplace(initializer_list<_Up> __il, _Args&&... __args) noexcept _LIBCPP_LIFETIMEBOUND {
726726
this->__destroy();
727727
this->__construct(in_place, __il, std::forward<_Args>(__args)...);
728728
return this->__val();

libcxx/include/__flat_map/flat_map.h

Lines changed: 49 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -509,31 +509,31 @@ class flat_map {
509509
}
510510

511511
// iterators
512-
_LIBCPP_HIDE_FROM_ABI iterator begin() noexcept {
512+
_LIBCPP_HIDE_FROM_ABI iterator begin() noexcept _LIBCPP_LIFETIMEBOUND {
513513
return iterator(__containers_.keys.begin(), __containers_.values.begin());
514514
}
515515

516-
_LIBCPP_HIDE_FROM_ABI const_iterator begin() const noexcept {
516+
_LIBCPP_HIDE_FROM_ABI const_iterator begin() const noexcept _LIBCPP_LIFETIMEBOUND {
517517
return const_iterator(__containers_.keys.begin(), __containers_.values.begin());
518518
}
519519

520-
_LIBCPP_HIDE_FROM_ABI iterator end() noexcept {
520+
_LIBCPP_HIDE_FROM_ABI iterator end() noexcept _LIBCPP_LIFETIMEBOUND {
521521
return iterator(__containers_.keys.end(), __containers_.values.end());
522522
}
523523

524-
_LIBCPP_HIDE_FROM_ABI const_iterator end() const noexcept {
524+
_LIBCPP_HIDE_FROM_ABI const_iterator end() const noexcept _LIBCPP_LIFETIMEBOUND {
525525
return const_iterator(__containers_.keys.end(), __containers_.values.end());
526526
}
527527

528-
_LIBCPP_HIDE_FROM_ABI reverse_iterator rbegin() noexcept { return reverse_iterator(end()); }
529-
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator(end()); }
530-
_LIBCPP_HIDE_FROM_ABI reverse_iterator rend() noexcept { return reverse_iterator(begin()); }
531-
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator rend() const noexcept { return const_reverse_iterator(begin()); }
528+
_LIBCPP_HIDE_FROM_ABI reverse_iterator rbegin() noexcept _LIBCPP_LIFETIMEBOUND { return reverse_iterator(end()); }
529+
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator rbegin() const noexcept _LIBCPP_LIFETIMEBOUND { return const_reverse_iterator(end()); }
530+
_LIBCPP_HIDE_FROM_ABI reverse_iterator rend() noexcept _LIBCPP_LIFETIMEBOUND { return reverse_iterator(begin()); }
531+
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator rend() const noexcept _LIBCPP_LIFETIMEBOUND { return const_reverse_iterator(begin()); }
532532

533-
_LIBCPP_HIDE_FROM_ABI const_iterator cbegin() const noexcept { return begin(); }
534-
_LIBCPP_HIDE_FROM_ABI const_iterator cend() const noexcept { return end(); }
535-
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator(end()); }
536-
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator crend() const noexcept { return const_reverse_iterator(begin()); }
533+
_LIBCPP_HIDE_FROM_ABI const_iterator cbegin() const noexcept _LIBCPP_LIFETIMEBOUND { return begin(); }
534+
_LIBCPP_HIDE_FROM_ABI const_iterator cend() const noexcept _LIBCPP_LIFETIMEBOUND { return end(); }
535+
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator crbegin() const noexcept _LIBCPP_LIFETIMEBOUND { return const_reverse_iterator(end()); }
536+
_LIBCPP_HIDE_FROM_ABI const_reverse_iterator crend() const noexcept _LIBCPP_LIFETIMEBOUND { return const_reverse_iterator(begin()); }
537537

538538
// [flat.map.capacity], capacity
539539
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool empty() const noexcept { return __containers_.keys.empty(); }
@@ -564,15 +564,15 @@ class flat_map {
564564
return try_emplace(std::forward<_Kp>(__x)).first->second;
565565
}
566566

567-
_LIBCPP_HIDE_FROM_ABI mapped_type& at(const key_type& __x) {
567+
_LIBCPP_HIDE_FROM_ABI mapped_type& at(const key_type& __x) _LIBCPP_LIFETIMEBOUND {
568568
auto __it = find(__x);
569569
if (__it == end()) {
570570
std::__throw_out_of_range("flat_map::at(const key_type&): Key does not exist");
571571
}
572572
return __it->second;
573573
}
574574

575-
_LIBCPP_HIDE_FROM_ABI const mapped_type& at(const key_type& __x) const {
575+
_LIBCPP_HIDE_FROM_ABI const mapped_type& at(const key_type& __x) const _LIBCPP_LIFETIMEBOUND {
576576
auto __it = find(__x);
577577
if (__it == end()) {
578578
std::__throw_out_of_range("flat_map::at(const key_type&) const: Key does not exist");
@@ -582,7 +582,7 @@ class flat_map {
582582

583583
template <class _Kp>
584584
requires __is_compare_transparent
585-
_LIBCPP_HIDE_FROM_ABI mapped_type& at(const _Kp& __x) {
585+
_LIBCPP_HIDE_FROM_ABI mapped_type& at(const _Kp& __x) _LIBCPP_LIFETIMEBOUND {
586586
auto __it = find(__x);
587587
if (__it == end()) {
588588
std::__throw_out_of_range("flat_map::at(const K&): Key does not exist");
@@ -592,7 +592,7 @@ class flat_map {
592592

593593
template <class _Kp>
594594
requires __is_compare_transparent
595-
_LIBCPP_HIDE_FROM_ABI const mapped_type& at(const _Kp& __x) const {
595+
_LIBCPP_HIDE_FROM_ABI const mapped_type& at(const _Kp& __x) const _LIBCPP_LIFETIMEBOUND {
596596
auto __it = find(__x);
597597
if (__it == end()) {
598598
std::__throw_out_of_range("flat_map::at(const K&) const: Key does not exist");
@@ -603,39 +603,39 @@ class flat_map {
603603
// [flat.map.modifiers], modifiers
604604
template <class... _Args>
605605
requires is_constructible_v<pair<key_type, mapped_type>, _Args...>
606-
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> emplace(_Args&&... __args) {
606+
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> emplace(_Args&&... __args) _LIBCPP_LIFETIMEBOUND {
607607
std::pair<key_type, mapped_type> __pair(std::forward<_Args>(__args)...);
608608
return __try_emplace(std::move(__pair.first), std::move(__pair.second));
609609
}
610610

611611
template <class... _Args>
612612
requires is_constructible_v<pair<key_type, mapped_type>, _Args...>
613-
_LIBCPP_HIDE_FROM_ABI iterator emplace_hint(const_iterator __hint, _Args&&... __args) {
613+
_LIBCPP_HIDE_FROM_ABI iterator emplace_hint(const_iterator __hint, _Args&&... __args) _LIBCPP_LIFETIMEBOUND {
614614
std::pair<key_type, mapped_type> __pair(std::forward<_Args>(__args)...);
615615
return __try_emplace_hint(__hint, std::move(__pair.first), std::move(__pair.second)).first;
616616
}
617617

618-
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> insert(const value_type& __x) { return emplace(__x); }
618+
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> insert(const value_type& __x) _LIBCPP_LIFETIMEBOUND { return emplace(__x); }
619619

620-
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> insert(value_type&& __x) { return emplace(std::move(__x)); }
620+
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> insert(value_type&& __x) _LIBCPP_LIFETIMEBOUND { return emplace(std::move(__x)); }
621621

622-
_LIBCPP_HIDE_FROM_ABI iterator insert(const_iterator __hint, const value_type& __x) {
622+
_LIBCPP_HIDE_FROM_ABI iterator insert(const_iterator __hint, const value_type& __x) _LIBCPP_LIFETIMEBOUND {
623623
return emplace_hint(__hint, __x);
624624
}
625625

626-
_LIBCPP_HIDE_FROM_ABI iterator insert(const_iterator __hint, value_type&& __x) {
626+
_LIBCPP_HIDE_FROM_ABI iterator insert(const_iterator __hint, value_type&& __x) _LIBCPP_LIFETIMEBOUND {
627627
return emplace_hint(__hint, std::move(__x));
628628
}
629629

630630
template <class _Pp>
631631
requires is_constructible_v<pair<key_type, mapped_type>, _Pp>
632-
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> insert(_Pp&& __x) {
632+
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> insert(_Pp&& __x) _LIBCPP_LIFETIMEBOUND {
633633
return emplace(std::forward<_Pp>(__x));
634634
}
635635

636636
template <class _Pp>
637637
requires is_constructible_v<pair<key_type, mapped_type>, _Pp>
638-
_LIBCPP_HIDE_FROM_ABI iterator insert(const_iterator __hint, _Pp&& __x) {
638+
_LIBCPP_HIDE_FROM_ABI iterator insert(const_iterator __hint, _Pp&& __x) _LIBCPP_LIFETIMEBOUND {
639639
return emplace_hint(__hint, std::forward<_Pp>(__x));
640640
}
641641

@@ -731,47 +731,47 @@ class flat_map {
731731

732732
template <class _Mapped>
733733
requires is_assignable_v<mapped_type&, _Mapped> && is_constructible_v<mapped_type, _Mapped>
734-
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> insert_or_assign(const key_type& __key, _Mapped&& __obj) {
734+
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> insert_or_assign(const key_type& __key, _Mapped&& __obj) _LIBCPP_LIFETIMEBOUND {
735735
return __insert_or_assign(__key, std::forward<_Mapped>(__obj));
736736
}
737737

738738
template <class _Mapped>
739739
requires is_assignable_v<mapped_type&, _Mapped> && is_constructible_v<mapped_type, _Mapped>
740-
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> insert_or_assign(key_type&& __key, _Mapped&& __obj) {
740+
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> insert_or_assign(key_type&& __key, _Mapped&& __obj) _LIBCPP_LIFETIMEBOUND {
741741
return __insert_or_assign(std::move(__key), std::forward<_Mapped>(__obj));
742742
}
743743

744744
template <class _Kp, class _Mapped>
745745
requires __is_compare_transparent && is_constructible_v<key_type, _Kp> && is_assignable_v<mapped_type&, _Mapped> &&
746746
is_constructible_v<mapped_type, _Mapped>
747-
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> insert_or_assign(_Kp&& __key, _Mapped&& __obj) {
747+
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> insert_or_assign(_Kp&& __key, _Mapped&& __obj) _LIBCPP_LIFETIMEBOUND {
748748
return __insert_or_assign(std::forward<_Kp>(__key), std::forward<_Mapped>(__obj));
749749
}
750750

751751
template <class _Mapped>
752752
requires is_assignable_v<mapped_type&, _Mapped> && is_constructible_v<mapped_type, _Mapped>
753-
_LIBCPP_HIDE_FROM_ABI iterator insert_or_assign(const_iterator __hint, const key_type& __key, _Mapped&& __obj) {
753+
_LIBCPP_HIDE_FROM_ABI iterator insert_or_assign(const_iterator __hint, const key_type& __key, _Mapped&& __obj) _LIBCPP_LIFETIMEBOUND {
754754
return __insert_or_assign(__hint, __key, std::forward<_Mapped>(__obj));
755755
}
756756

757757
template <class _Mapped>
758758
requires is_assignable_v<mapped_type&, _Mapped> && is_constructible_v<mapped_type, _Mapped>
759-
_LIBCPP_HIDE_FROM_ABI iterator insert_or_assign(const_iterator __hint, key_type&& __key, _Mapped&& __obj) {
759+
_LIBCPP_HIDE_FROM_ABI iterator insert_or_assign(const_iterator __hint, key_type&& __key, _Mapped&& __obj) _LIBCPP_LIFETIMEBOUND {
760760
return __insert_or_assign(__hint, std::move(__key), std::forward<_Mapped>(__obj));
761761
}
762762

763763
template <class _Kp, class _Mapped>
764764
requires __is_compare_transparent && is_constructible_v<key_type, _Kp> && is_assignable_v<mapped_type&, _Mapped> &&
765765
is_constructible_v<mapped_type, _Mapped>
766-
_LIBCPP_HIDE_FROM_ABI iterator insert_or_assign(const_iterator __hint, _Kp&& __key, _Mapped&& __obj) {
766+
_LIBCPP_HIDE_FROM_ABI iterator insert_or_assign(const_iterator __hint, _Kp&& __key, _Mapped&& __obj) _LIBCPP_LIFETIMEBOUND {
767767
return __insert_or_assign(__hint, std::forward<_Kp>(__key), std::forward<_Mapped>(__obj));
768768
}
769769

770-
_LIBCPP_HIDE_FROM_ABI iterator erase(iterator __position) {
770+
_LIBCPP_HIDE_FROM_ABI iterator erase(iterator __position) _LIBCPP_LIFETIMEBOUND {
771771
return __erase(__position.__key_iter_, __position.__mapped_iter_);
772772
}
773773

774-
_LIBCPP_HIDE_FROM_ABI iterator erase(const_iterator __position) {
774+
_LIBCPP_HIDE_FROM_ABI iterator erase(const_iterator __position) _LIBCPP_LIFETIMEBOUND {
775775
return __erase(__position.__key_iter_, __position.__mapped_iter_);
776776
}
777777

@@ -794,7 +794,7 @@ class flat_map {
794794
return __res;
795795
}
796796

797-
_LIBCPP_HIDE_FROM_ABI iterator erase(const_iterator __first, const_iterator __last) {
797+
_LIBCPP_HIDE_FROM_ABI iterator erase(const_iterator __first, const_iterator __last) _LIBCPP_LIFETIMEBOUND {
798798
auto __on_failure = std::__make_exception_guard([&]() noexcept { clear() /* noexcept */; });
799799
auto __key_it = __containers_.keys.erase(__first.__key_iter_, __last.__key_iter_);
800800
auto __mapped_it = __containers_.values.erase(__first.__mapped_iter_, __last.__mapped_iter_);
@@ -825,19 +825,19 @@ class flat_map {
825825
_LIBCPP_HIDE_FROM_ABI const mapped_container_type& values() const noexcept { return __containers_.values; }
826826

827827
// map operations
828-
_LIBCPP_HIDE_FROM_ABI iterator find(const key_type& __x) { return __find_impl(*this, __x); }
828+
_LIBCPP_HIDE_FROM_ABI iterator find(const key_type& __x) _LIBCPP_LIFETIMEBOUND { return __find_impl(*this, __x); }
829829

830-
_LIBCPP_HIDE_FROM_ABI const_iterator find(const key_type& __x) const { return __find_impl(*this, __x); }
830+
_LIBCPP_HIDE_FROM_ABI const_iterator find(const key_type& __x) const _LIBCPP_LIFETIMEBOUND { return __find_impl(*this, __x); }
831831

832832
template <class _Kp>
833833
requires __is_compare_transparent
834-
_LIBCPP_HIDE_FROM_ABI iterator find(const _Kp& __x) {
834+
_LIBCPP_HIDE_FROM_ABI iterator find(const _Kp& __x) _LIBCPP_LIFETIMEBOUND {
835835
return __find_impl(*this, __x);
836836
}
837837

838838
template <class _Kp>
839839
requires __is_compare_transparent
840-
_LIBCPP_HIDE_FROM_ABI const_iterator find(const _Kp& __x) const {
840+
_LIBCPP_HIDE_FROM_ABI const_iterator find(const _Kp& __x) const _LIBCPP_LIFETIMEBOUND {
841841
return __find_impl(*this, __x);
842842
}
843843

@@ -857,58 +857,58 @@ class flat_map {
857857
return find(__x) != end();
858858
}
859859

860-
_LIBCPP_HIDE_FROM_ABI iterator lower_bound(const key_type& __x) { return __lower_bound<iterator>(*this, __x); }
860+
_LIBCPP_HIDE_FROM_ABI iterator lower_bound(const key_type& __x) _LIBCPP_LIFETIMEBOUND { return __lower_bound<iterator>(*this, __x); }
861861

862-
_LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const key_type& __x) const {
862+
_LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const key_type& __x) const _LIBCPP_LIFETIMEBOUND {
863863
return __lower_bound<const_iterator>(*this, __x);
864864
}
865865

866866
template <class _Kp>
867867
requires __is_compare_transparent
868-
_LIBCPP_HIDE_FROM_ABI iterator lower_bound(const _Kp& __x) {
868+
_LIBCPP_HIDE_FROM_ABI iterator lower_bound(const _Kp& __x) _LIBCPP_LIFETIMEBOUND {
869869
return __lower_bound<iterator>(*this, __x);
870870
}
871871

872872
template <class _Kp>
873873
requires __is_compare_transparent
874-
_LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const _Kp& __x) const {
874+
_LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const _Kp& __x) const _LIBCPP_LIFETIMEBOUND {
875875
return __lower_bound<const_iterator>(*this, __x);
876876
}
877877

878-
_LIBCPP_HIDE_FROM_ABI iterator upper_bound(const key_type& __x) { return __upper_bound<iterator>(*this, __x); }
878+
_LIBCPP_HIDE_FROM_ABI iterator upper_bound(const key_type& __x) _LIBCPP_LIFETIMEBOUND { return __upper_bound<iterator>(*this, __x); }
879879

880-
_LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const key_type& __x) const {
880+
_LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const key_type& __x) const _LIBCPP_LIFETIMEBOUND {
881881
return __upper_bound<const_iterator>(*this, __x);
882882
}
883883

884884
template <class _Kp>
885885
requires __is_compare_transparent
886-
_LIBCPP_HIDE_FROM_ABI iterator upper_bound(const _Kp& __x) {
886+
_LIBCPP_HIDE_FROM_ABI iterator upper_bound(const _Kp& __x) _LIBCPP_LIFETIMEBOUND {
887887
return __upper_bound<iterator>(*this, __x);
888888
}
889889

890890
template <class _Kp>
891891
requires __is_compare_transparent
892-
_LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const _Kp& __x) const {
892+
_LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const _Kp& __x) const _LIBCPP_LIFETIMEBOUND {
893893
return __upper_bound<const_iterator>(*this, __x);
894894
}
895895

896-
_LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const key_type& __x) {
896+
_LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const key_type& __x) _LIBCPP_LIFETIMEBOUND {
897897
return __equal_range_impl(*this, __x);
898898
}
899899

900-
_LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const key_type& __x) const {
900+
_LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const key_type& __x) const _LIBCPP_LIFETIMEBOUND {
901901
return __equal_range_impl(*this, __x);
902902
}
903903

904904
template <class _Kp>
905905
requires __is_compare_transparent
906-
_LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const _Kp& __x) {
906+
_LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range(const _Kp& __x) _LIBCPP_LIFETIMEBOUND {
907907
return __equal_range_impl(*this, __x);
908908
}
909909
template <class _Kp>
910910
requires __is_compare_transparent
911-
_LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const _Kp& __x) const {
911+
_LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range(const _Kp& __x) const _LIBCPP_LIFETIMEBOUND {
912912
return __equal_range_impl(*this, __x);
913913
}
914914

libcxx/include/__format/format_parse_context.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ class _LIBCPP_TEMPLATE_VIS basic_format_parse_context {
4141
basic_format_parse_context(const basic_format_parse_context&) = delete;
4242
basic_format_parse_context& operator=(const basic_format_parse_context&) = delete;
4343

44-
_LIBCPP_HIDE_FROM_ABI constexpr const_iterator begin() const noexcept { return __begin_; }
45-
_LIBCPP_HIDE_FROM_ABI constexpr const_iterator end() const noexcept { return __end_; }
44+
_LIBCPP_HIDE_FROM_ABI constexpr const_iterator begin() const noexcept _LIBCPP_LIFETIMEBOUND { return __begin_; }
45+
_LIBCPP_HIDE_FROM_ABI constexpr const_iterator end() const noexcept _LIBCPP_LIFETIMEBOUND { return __end_; }
4646
_LIBCPP_HIDE_FROM_ABI constexpr void advance_to(const_iterator __it) { __begin_ = __it; }
4747

4848
_LIBCPP_HIDE_FROM_ABI constexpr size_t next_arg_id() {

libcxx/include/__format/formatter_floating_point.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,8 @@ class _LIBCPP_TEMPLATE_VIS __float_buffer {
183183
_LIBCPP_HIDE_FROM_ABI __float_buffer(const __float_buffer&) = delete;
184184
_LIBCPP_HIDE_FROM_ABI __float_buffer& operator=(const __float_buffer&) = delete;
185185

186-
_LIBCPP_HIDE_FROM_ABI char* begin() const { return __begin_; }
187-
_LIBCPP_HIDE_FROM_ABI char* end() const { return __begin_ + __size_; }
186+
_LIBCPP_HIDE_FROM_ABI char* begin() const _LIBCPP_LIFETIMEBOUND { return __begin_; }
187+
_LIBCPP_HIDE_FROM_ABI char* end() const _LIBCPP_LIFETIMEBOUND { return __begin_ + __size_; }
188188

189189
_LIBCPP_HIDE_FROM_ABI int __precision() const { return __precision_; }
190190
_LIBCPP_HIDE_FROM_ABI int __num_trailing_zeros() const { return __num_trailing_zeros_; }

libcxx/include/__hash_table

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -891,10 +891,10 @@ public:
891891

892892
_LIBCPP_HIDE_FROM_ABI size_type bucket_count() const _NOEXCEPT { return __bucket_list_.get_deleter().size(); }
893893

894-
_LIBCPP_HIDE_FROM_ABI iterator begin() _NOEXCEPT;
895-
_LIBCPP_HIDE_FROM_ABI iterator end() _NOEXCEPT;
896-
_LIBCPP_HIDE_FROM_ABI const_iterator begin() const _NOEXCEPT;
897-
_LIBCPP_HIDE_FROM_ABI const_iterator end() const _NOEXCEPT;
894+
_LIBCPP_HIDE_FROM_ABI iterator begin() _NOEXCEPT _LIBCPP_LIFETIMEBOUND;
895+
_LIBCPP_HIDE_FROM_ABI iterator end() _NOEXCEPT _LIBCPP_LIFETIMEBOUND;
896+
_LIBCPP_HIDE_FROM_ABI const_iterator begin() const _NOEXCEPT _LIBCPP_LIFETIMEBOUND;
897+
_LIBCPP_HIDE_FROM_ABI const_iterator end() const _NOEXCEPT _LIBCPP_LIFETIMEBOUND;
898898

899899
template <class _Key>
900900
_LIBCPP_HIDE_FROM_ABI size_type bucket(const _Key& __k) const {
@@ -904,15 +904,15 @@ public:
904904
}
905905

906906
template <class _Key>
907-
_LIBCPP_HIDE_FROM_ABI iterator find(const _Key& __x);
907+
_LIBCPP_HIDE_FROM_ABI iterator find(const _Key& __x) _LIBCPP_LIFETIMEBOUND;
908908
template <class _Key>
909-
_LIBCPP_HIDE_FROM_ABI const_iterator find(const _Key& __x) const;
909+
_LIBCPP_HIDE_FROM_ABI const_iterator find(const _Key& __x) const _LIBCPP_LIFETIMEBOUND;
910910

911911
typedef __hash_node_destructor<__node_allocator> _Dp;
912912
typedef unique_ptr<__node, _Dp> __node_holder;
913913

914-
_LIBCPP_HIDE_FROM_ABI iterator erase(const_iterator __p);
915-
_LIBCPP_HIDE_FROM_ABI iterator erase(const_iterator __first, const_iterator __last);
914+
_LIBCPP_HIDE_FROM_ABI iterator erase(const_iterator __p) _LIBCPP_LIFETIMEBOUND;
915+
_LIBCPP_HIDE_FROM_ABI iterator erase(const_iterator __first, const_iterator __last) _LIBCPP_LIFETIMEBOUND;
916916
template <class _Key>
917917
_LIBCPP_HIDE_FROM_ABI size_type __erase_unique(const _Key& __k);
918918
template <class _Key>

0 commit comments

Comments
 (0)