@@ -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
0 commit comments