@@ -510,31 +510,31 @@ class flat_map {
510510 }
511511
512512 // iterators
513- _LIBCPP_HIDE_FROM_ABI iterator begin () noexcept {
513+ _LIBCPP_HIDE_FROM_ABI iterator begin () noexcept _LIBCPP_LIFETIMEBOUND {
514514 return iterator (__containers_.keys .begin (), __containers_.values .begin ());
515515 }
516516
517- _LIBCPP_HIDE_FROM_ABI const_iterator begin () const noexcept {
517+ _LIBCPP_HIDE_FROM_ABI const_iterator begin () const noexcept _LIBCPP_LIFETIMEBOUND {
518518 return const_iterator (__containers_.keys .begin (), __containers_.values .begin ());
519519 }
520520
521- _LIBCPP_HIDE_FROM_ABI iterator end () noexcept {
521+ _LIBCPP_HIDE_FROM_ABI iterator end () noexcept _LIBCPP_LIFETIMEBOUND {
522522 return iterator (__containers_.keys .end (), __containers_.values .end ());
523523 }
524524
525- _LIBCPP_HIDE_FROM_ABI const_iterator end () const noexcept {
525+ _LIBCPP_HIDE_FROM_ABI const_iterator end () const noexcept _LIBCPP_LIFETIMEBOUND {
526526 return const_iterator (__containers_.keys .end (), __containers_.values .end ());
527527 }
528528
529- _LIBCPP_HIDE_FROM_ABI reverse_iterator rbegin () noexcept { return reverse_iterator (end ()); }
530- _LIBCPP_HIDE_FROM_ABI const_reverse_iterator rbegin () const noexcept { return const_reverse_iterator (end ()); }
531- _LIBCPP_HIDE_FROM_ABI reverse_iterator rend () noexcept { return reverse_iterator (begin ()); }
532- _LIBCPP_HIDE_FROM_ABI const_reverse_iterator rend () const noexcept { return const_reverse_iterator (begin ()); }
529+ _LIBCPP_HIDE_FROM_ABI reverse_iterator rbegin () noexcept _LIBCPP_LIFETIMEBOUND { return reverse_iterator (end ()); }
530+ _LIBCPP_HIDE_FROM_ABI const_reverse_iterator rbegin () const noexcept _LIBCPP_LIFETIMEBOUND { return const_reverse_iterator (end ()); }
531+ _LIBCPP_HIDE_FROM_ABI reverse_iterator rend () noexcept _LIBCPP_LIFETIMEBOUND { return reverse_iterator (begin ()); }
532+ _LIBCPP_HIDE_FROM_ABI const_reverse_iterator rend () const noexcept _LIBCPP_LIFETIMEBOUND { return const_reverse_iterator (begin ()); }
533533
534- _LIBCPP_HIDE_FROM_ABI const_iterator cbegin () const noexcept { return begin (); }
535- _LIBCPP_HIDE_FROM_ABI const_iterator cend () const noexcept { return end (); }
536- _LIBCPP_HIDE_FROM_ABI const_reverse_iterator crbegin () const noexcept { return const_reverse_iterator (end ()); }
537- _LIBCPP_HIDE_FROM_ABI const_reverse_iterator crend () const noexcept { return const_reverse_iterator (begin ()); }
534+ _LIBCPP_HIDE_FROM_ABI const_iterator cbegin () const noexcept _LIBCPP_LIFETIMEBOUND { return begin (); }
535+ _LIBCPP_HIDE_FROM_ABI const_iterator cend () const noexcept _LIBCPP_LIFETIMEBOUND { return end (); }
536+ _LIBCPP_HIDE_FROM_ABI const_reverse_iterator crbegin () const noexcept _LIBCPP_LIFETIMEBOUND { return const_reverse_iterator (end ()); }
537+ _LIBCPP_HIDE_FROM_ABI const_reverse_iterator crend () const noexcept _LIBCPP_LIFETIMEBOUND { return const_reverse_iterator (begin ()); }
538538
539539 // [flat.map.capacity], capacity
540540 [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool empty () const noexcept { return __containers_.keys .empty (); }
@@ -565,15 +565,15 @@ class flat_map {
565565 return try_emplace (std::forward<_Kp>(__x)).first ->second ;
566566 }
567567
568- _LIBCPP_HIDE_FROM_ABI mapped_type& at (const key_type& __x) {
568+ _LIBCPP_HIDE_FROM_ABI mapped_type& at (const key_type& __x) _LIBCPP_LIFETIMEBOUND {
569569 auto __it = find (__x);
570570 if (__it == end ()) {
571571 std::__throw_out_of_range (" flat_map::at(const key_type&): Key does not exist" );
572572 }
573573 return __it->second ;
574574 }
575575
576- _LIBCPP_HIDE_FROM_ABI const mapped_type& at (const key_type& __x) const {
576+ _LIBCPP_HIDE_FROM_ABI const mapped_type& at (const key_type& __x) const _LIBCPP_LIFETIMEBOUND {
577577 auto __it = find (__x);
578578 if (__it == end ()) {
579579 std::__throw_out_of_range (" flat_map::at(const key_type&) const: Key does not exist" );
@@ -583,7 +583,7 @@ class flat_map {
583583
584584 template <class _Kp >
585585 requires __is_compare_transparent
586- _LIBCPP_HIDE_FROM_ABI mapped_type& at (const _Kp& __x) {
586+ _LIBCPP_HIDE_FROM_ABI mapped_type& at (const _Kp& __x) _LIBCPP_LIFETIMEBOUND {
587587 auto __it = find (__x);
588588 if (__it == end ()) {
589589 std::__throw_out_of_range (" flat_map::at(const K&): Key does not exist" );
@@ -593,7 +593,7 @@ class flat_map {
593593
594594 template <class _Kp >
595595 requires __is_compare_transparent
596- _LIBCPP_HIDE_FROM_ABI const mapped_type& at (const _Kp& __x) const {
596+ _LIBCPP_HIDE_FROM_ABI const mapped_type& at (const _Kp& __x) const _LIBCPP_LIFETIMEBOUND {
597597 auto __it = find (__x);
598598 if (__it == end ()) {
599599 std::__throw_out_of_range (" flat_map::at(const K&) const: Key does not exist" );
@@ -604,39 +604,39 @@ class flat_map {
604604 // [flat.map.modifiers], modifiers
605605 template <class ... _Args>
606606 requires is_constructible_v<pair<key_type, mapped_type>, _Args...>
607- _LIBCPP_HIDE_FROM_ABI pair<iterator, bool > emplace (_Args&&... __args) {
607+ _LIBCPP_HIDE_FROM_ABI pair<iterator, bool > emplace (_Args&&... __args) _LIBCPP_LIFETIMEBOUND {
608608 std::pair<key_type, mapped_type> __pair (std::forward<_Args>(__args)...);
609609 return __try_emplace (std::move (__pair.first ), std::move (__pair.second ));
610610 }
611611
612612 template <class ... _Args>
613613 requires is_constructible_v<pair<key_type, mapped_type>, _Args...>
614- _LIBCPP_HIDE_FROM_ABI iterator emplace_hint (const_iterator __hint, _Args&&... __args) {
614+ _LIBCPP_HIDE_FROM_ABI iterator emplace_hint (const_iterator __hint, _Args&&... __args) _LIBCPP_LIFETIMEBOUND {
615615 std::pair<key_type, mapped_type> __pair (std::forward<_Args>(__args)...);
616616 return __try_emplace_hint (__hint, std::move (__pair.first ), std::move (__pair.second )).first ;
617617 }
618618
619- _LIBCPP_HIDE_FROM_ABI pair<iterator, bool > insert (const value_type& __x) { return emplace (__x); }
619+ _LIBCPP_HIDE_FROM_ABI pair<iterator, bool > insert (const value_type& __x) _LIBCPP_LIFETIMEBOUND { return emplace (__x); }
620620
621- _LIBCPP_HIDE_FROM_ABI pair<iterator, bool > insert (value_type&& __x) { return emplace (std::move (__x)); }
621+ _LIBCPP_HIDE_FROM_ABI pair<iterator, bool > insert (value_type&& __x) _LIBCPP_LIFETIMEBOUND { return emplace (std::move (__x)); }
622622
623- _LIBCPP_HIDE_FROM_ABI iterator insert (const_iterator __hint, const value_type& __x) {
623+ _LIBCPP_HIDE_FROM_ABI iterator insert (const_iterator __hint, const value_type& __x) _LIBCPP_LIFETIMEBOUND {
624624 return emplace_hint (__hint, __x);
625625 }
626626
627- _LIBCPP_HIDE_FROM_ABI iterator insert (const_iterator __hint, value_type&& __x) {
627+ _LIBCPP_HIDE_FROM_ABI iterator insert (const_iterator __hint, value_type&& __x) _LIBCPP_LIFETIMEBOUND {
628628 return emplace_hint (__hint, std::move (__x));
629629 }
630630
631631 template <class _Pp >
632632 requires is_constructible_v<pair<key_type, mapped_type>, _Pp>
633- _LIBCPP_HIDE_FROM_ABI pair<iterator, bool > insert (_Pp&& __x) {
633+ _LIBCPP_HIDE_FROM_ABI pair<iterator, bool > insert (_Pp&& __x) _LIBCPP_LIFETIMEBOUND {
634634 return emplace (std::forward<_Pp>(__x));
635635 }
636636
637637 template <class _Pp >
638638 requires is_constructible_v<pair<key_type, mapped_type>, _Pp>
639- _LIBCPP_HIDE_FROM_ABI iterator insert (const_iterator __hint, _Pp&& __x) {
639+ _LIBCPP_HIDE_FROM_ABI iterator insert (const_iterator __hint, _Pp&& __x) _LIBCPP_LIFETIMEBOUND {
640640 return emplace_hint (__hint, std::forward<_Pp>(__x));
641641 }
642642
@@ -732,47 +732,47 @@ class flat_map {
732732
733733 template <class _Mapped >
734734 requires is_assignable_v<mapped_type&, _Mapped> && is_constructible_v<mapped_type, _Mapped>
735- _LIBCPP_HIDE_FROM_ABI pair<iterator, bool > insert_or_assign (const key_type& __key, _Mapped&& __obj) {
735+ _LIBCPP_HIDE_FROM_ABI pair<iterator, bool > insert_or_assign (const key_type& __key, _Mapped&& __obj) _LIBCPP_LIFETIMEBOUND {
736736 return __insert_or_assign (__key, std::forward<_Mapped>(__obj));
737737 }
738738
739739 template <class _Mapped >
740740 requires is_assignable_v<mapped_type&, _Mapped> && is_constructible_v<mapped_type, _Mapped>
741- _LIBCPP_HIDE_FROM_ABI pair<iterator, bool > insert_or_assign (key_type&& __key, _Mapped&& __obj) {
741+ _LIBCPP_HIDE_FROM_ABI pair<iterator, bool > insert_or_assign (key_type&& __key, _Mapped&& __obj) _LIBCPP_LIFETIMEBOUND {
742742 return __insert_or_assign (std::move (__key), std::forward<_Mapped>(__obj));
743743 }
744744
745745 template <class _Kp , class _Mapped >
746746 requires __is_compare_transparent && is_constructible_v<key_type, _Kp> && is_assignable_v<mapped_type&, _Mapped> &&
747747 is_constructible_v<mapped_type, _Mapped>
748- _LIBCPP_HIDE_FROM_ABI pair<iterator, bool > insert_or_assign (_Kp&& __key, _Mapped&& __obj) {
748+ _LIBCPP_HIDE_FROM_ABI pair<iterator, bool > insert_or_assign (_Kp&& __key, _Mapped&& __obj) _LIBCPP_LIFETIMEBOUND {
749749 return __insert_or_assign (std::forward<_Kp>(__key), std::forward<_Mapped>(__obj));
750750 }
751751
752752 template <class _Mapped >
753753 requires is_assignable_v<mapped_type&, _Mapped> && is_constructible_v<mapped_type, _Mapped>
754- _LIBCPP_HIDE_FROM_ABI iterator insert_or_assign (const_iterator __hint, const key_type& __key, _Mapped&& __obj) {
754+ _LIBCPP_HIDE_FROM_ABI iterator insert_or_assign (const_iterator __hint, const key_type& __key, _Mapped&& __obj) _LIBCPP_LIFETIMEBOUND {
755755 return __insert_or_assign (__hint, __key, std::forward<_Mapped>(__obj));
756756 }
757757
758758 template <class _Mapped >
759759 requires is_assignable_v<mapped_type&, _Mapped> && is_constructible_v<mapped_type, _Mapped>
760- _LIBCPP_HIDE_FROM_ABI iterator insert_or_assign (const_iterator __hint, key_type&& __key, _Mapped&& __obj) {
760+ _LIBCPP_HIDE_FROM_ABI iterator insert_or_assign (const_iterator __hint, key_type&& __key, _Mapped&& __obj) _LIBCPP_LIFETIMEBOUND {
761761 return __insert_or_assign (__hint, std::move (__key), std::forward<_Mapped>(__obj));
762762 }
763763
764764 template <class _Kp , class _Mapped >
765765 requires __is_compare_transparent && is_constructible_v<key_type, _Kp> && is_assignable_v<mapped_type&, _Mapped> &&
766766 is_constructible_v<mapped_type, _Mapped>
767- _LIBCPP_HIDE_FROM_ABI iterator insert_or_assign (const_iterator __hint, _Kp&& __key, _Mapped&& __obj) {
767+ _LIBCPP_HIDE_FROM_ABI iterator insert_or_assign (const_iterator __hint, _Kp&& __key, _Mapped&& __obj) _LIBCPP_LIFETIMEBOUND {
768768 return __insert_or_assign (__hint, std::forward<_Kp>(__key), std::forward<_Mapped>(__obj));
769769 }
770770
771- _LIBCPP_HIDE_FROM_ABI iterator erase (iterator __position) {
771+ _LIBCPP_HIDE_FROM_ABI iterator erase (iterator __position) _LIBCPP_LIFETIMEBOUND {
772772 return __erase (__position.__key_iter_ , __position.__mapped_iter_ );
773773 }
774774
775- _LIBCPP_HIDE_FROM_ABI iterator erase (const_iterator __position) {
775+ _LIBCPP_HIDE_FROM_ABI iterator erase (const_iterator __position) _LIBCPP_LIFETIMEBOUND {
776776 return __erase (__position.__key_iter_ , __position.__mapped_iter_ );
777777 }
778778
@@ -795,7 +795,7 @@ class flat_map {
795795 return __res;
796796 }
797797
798- _LIBCPP_HIDE_FROM_ABI iterator erase (const_iterator __first, const_iterator __last) {
798+ _LIBCPP_HIDE_FROM_ABI iterator erase (const_iterator __first, const_iterator __last) _LIBCPP_LIFETIMEBOUND {
799799 auto __on_failure = std::__make_exception_guard ([&]() noexcept { clear () /* noexcept */ ; });
800800 auto __key_it = __containers_.keys .erase (__first.__key_iter_ , __last.__key_iter_ );
801801 auto __mapped_it = __containers_.values .erase (__first.__mapped_iter_ , __last.__mapped_iter_ );
@@ -826,19 +826,19 @@ class flat_map {
826826 _LIBCPP_HIDE_FROM_ABI const mapped_container_type& values () const noexcept { return __containers_.values ; }
827827
828828 // map operations
829- _LIBCPP_HIDE_FROM_ABI iterator find (const key_type& __x) { return __find_impl (*this , __x); }
829+ _LIBCPP_HIDE_FROM_ABI iterator find (const key_type& __x) _LIBCPP_LIFETIMEBOUND { return __find_impl (*this , __x); }
830830
831- _LIBCPP_HIDE_FROM_ABI const_iterator find (const key_type& __x) const { return __find_impl (*this , __x); }
831+ _LIBCPP_HIDE_FROM_ABI const_iterator find (const key_type& __x) const _LIBCPP_LIFETIMEBOUND { return __find_impl (*this , __x); }
832832
833833 template <class _Kp >
834834 requires __is_compare_transparent
835- _LIBCPP_HIDE_FROM_ABI iterator find (const _Kp& __x) {
835+ _LIBCPP_HIDE_FROM_ABI iterator find (const _Kp& __x) _LIBCPP_LIFETIMEBOUND {
836836 return __find_impl (*this , __x);
837837 }
838838
839839 template <class _Kp >
840840 requires __is_compare_transparent
841- _LIBCPP_HIDE_FROM_ABI const_iterator find (const _Kp& __x) const {
841+ _LIBCPP_HIDE_FROM_ABI const_iterator find (const _Kp& __x) const _LIBCPP_LIFETIMEBOUND {
842842 return __find_impl (*this , __x);
843843 }
844844
@@ -858,58 +858,58 @@ class flat_map {
858858 return find (__x) != end ();
859859 }
860860
861- _LIBCPP_HIDE_FROM_ABI iterator lower_bound (const key_type& __x) { return __lower_bound<iterator>(*this , __x); }
861+ _LIBCPP_HIDE_FROM_ABI iterator lower_bound (const key_type& __x) _LIBCPP_LIFETIMEBOUND { return __lower_bound<iterator>(*this , __x); }
862862
863- _LIBCPP_HIDE_FROM_ABI const_iterator lower_bound (const key_type& __x) const {
863+ _LIBCPP_HIDE_FROM_ABI const_iterator lower_bound (const key_type& __x) const _LIBCPP_LIFETIMEBOUND {
864864 return __lower_bound<const_iterator>(*this , __x);
865865 }
866866
867867 template <class _Kp >
868868 requires __is_compare_transparent
869- _LIBCPP_HIDE_FROM_ABI iterator lower_bound (const _Kp& __x) {
869+ _LIBCPP_HIDE_FROM_ABI iterator lower_bound (const _Kp& __x) _LIBCPP_LIFETIMEBOUND {
870870 return __lower_bound<iterator>(*this , __x);
871871 }
872872
873873 template <class _Kp >
874874 requires __is_compare_transparent
875- _LIBCPP_HIDE_FROM_ABI const_iterator lower_bound (const _Kp& __x) const {
875+ _LIBCPP_HIDE_FROM_ABI const_iterator lower_bound (const _Kp& __x) const _LIBCPP_LIFETIMEBOUND {
876876 return __lower_bound<const_iterator>(*this , __x);
877877 }
878878
879- _LIBCPP_HIDE_FROM_ABI iterator upper_bound (const key_type& __x) { return __upper_bound<iterator>(*this , __x); }
879+ _LIBCPP_HIDE_FROM_ABI iterator upper_bound (const key_type& __x) _LIBCPP_LIFETIMEBOUND { return __upper_bound<iterator>(*this , __x); }
880880
881- _LIBCPP_HIDE_FROM_ABI const_iterator upper_bound (const key_type& __x) const {
881+ _LIBCPP_HIDE_FROM_ABI const_iterator upper_bound (const key_type& __x) const _LIBCPP_LIFETIMEBOUND {
882882 return __upper_bound<const_iterator>(*this , __x);
883883 }
884884
885885 template <class _Kp >
886886 requires __is_compare_transparent
887- _LIBCPP_HIDE_FROM_ABI iterator upper_bound (const _Kp& __x) {
887+ _LIBCPP_HIDE_FROM_ABI iterator upper_bound (const _Kp& __x) _LIBCPP_LIFETIMEBOUND {
888888 return __upper_bound<iterator>(*this , __x);
889889 }
890890
891891 template <class _Kp >
892892 requires __is_compare_transparent
893- _LIBCPP_HIDE_FROM_ABI const_iterator upper_bound (const _Kp& __x) const {
893+ _LIBCPP_HIDE_FROM_ABI const_iterator upper_bound (const _Kp& __x) const _LIBCPP_LIFETIMEBOUND {
894894 return __upper_bound<const_iterator>(*this , __x);
895895 }
896896
897- _LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range (const key_type& __x) {
897+ _LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range (const key_type& __x) _LIBCPP_LIFETIMEBOUND {
898898 return __equal_range_impl (*this , __x);
899899 }
900900
901- _LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range (const key_type& __x) const {
901+ _LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range (const key_type& __x) const _LIBCPP_LIFETIMEBOUND {
902902 return __equal_range_impl (*this , __x);
903903 }
904904
905905 template <class _Kp >
906906 requires __is_compare_transparent
907- _LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range (const _Kp& __x) {
907+ _LIBCPP_HIDE_FROM_ABI pair<iterator, iterator> equal_range (const _Kp& __x) _LIBCPP_LIFETIMEBOUND {
908908 return __equal_range_impl (*this , __x);
909909 }
910910 template <class _Kp >
911911 requires __is_compare_transparent
912- _LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range (const _Kp& __x) const {
912+ _LIBCPP_HIDE_FROM_ABI pair<const_iterator, const_iterator> equal_range (const _Kp& __x) const _LIBCPP_LIFETIMEBOUND {
913913 return __equal_range_impl (*this , __x);
914914 }
915915
0 commit comments