__GNU_DEBUG::_SAFE_FORWARD_LIST(3cxx)

πŸ’… NAME πŸ’…

__gnu_debug::_Safe_forward_list< _SafeSequence > β€” okay bestie, this is the 3cxx manual page for the special-iterators swap-and-invalidation situation for forward_list, and it's literally all because of the before_begin iterator. Periodt. πŸŽ€


✨ SYNOPSIS ✨

#include <forward_list>

Inherits __gnu_debug::_Safe_sequence< _SafeSequence >. Slay. πŸ’–

🫢 Public Member Functions

  • void _M_invalidate_if (_Predicate __pred) β€” the invalidate-if vibe check.
  • void _M_transfer_from_if (_Safe_sequence &__from, _Predicate __pred) β€” the transfer-from-if situation.

πŸŽ€ Public Attributes

  • _Safe_iterator_base * _M_const_iterators β€” The list of constant iterators that reference this container. Iconic little registry. ✨
  • _Safe_iterator_base * _M_iterators β€” The list of mutable iterators that reference this container. Also iconic. πŸ’…
  • unsigned int _M_version β€” The container version number. This number may never be 0. No cap, never ever. 🚨

πŸ¦‹ Protected Member Functions

  • void _M_detach_all ()
  • void _M_detach_singular ()
  • __gnu_cxx::__mutex & _M_get_mutex () throw ()
  • void _M_invalidate_all ()
  • void _M_invalidate_all () const
  • void _M_revalidate_singular ()
  • void _M_swap (_Safe_sequence_base &) noexcept

🌸 Detailed Description 🌸

template<typename _SafeSequence>
class __gnu_debug::_Safe_forward_list< _SafeSequence >

Special iterators swap and invalidation for forward_list because of the before_begin iterator. That's the whole main character energy of this page, fr fr. πŸ¦‹


πŸ’– Member Function Documentation πŸ’–

🧹 void __gnu_debug::_Safe_sequence_base::_M_detach_all () β€” [protected], [inherited]

Detach all iterators, leaving them singular.

Referenced by __gnu_debug::_Safe_sequence_base::~_Safe_sequence_base().


🫧 void __gnu_debug::_Safe_sequence_base::_M_detach_singular () β€” [protected], [inherited]

Detach all singular iterators.

Postcondition: for all iterators i attached to this sequence, i->_M_version == _M_version.


πŸ” __gnu_cxx::__mutex & __gnu_debug::_Safe_sequence_base::_M_get_mutex () β€” [protected], [inherited]

For use in _Safe_sequence.

Referenced by __gnu_debug::_Safe_sequence< _Sequence >::_M_transfer_from_if().


πŸ’₯ void __gnu_debug::_Safe_sequence_base::_M_invalidate_all () const β€” [inline], [protected], [inherited]

Invalidates all iterators.

References __gnu_debug::_Safe_sequence_base::_M_version.


🎯 void __gnu_debug::_Safe_sequence< _SafeSequence >::_M_invalidate_if (_Predicate __pred) β€” [inherited]

Invalidates all iterators x that reference this sequence, are not singular, and for which __pred(x) returns true. __pred will be invoked with the normal iterators nested in the safe ones.


🩹 void __gnu_debug::_Safe_sequence_base::_M_revalidate_singular () β€” [protected], [inherited]

Revalidates all attached singular iterators. This method may be used to validate iterators that were invalidated before (but for some reason, such as an exception, need to become valid again).


🚚 void __gnu_debug::_Safe_sequence< _SafeSequence >::_M_transfer_from_if (_Safe_sequence< _SafeSequence > & __from, _Predicate __pred) β€” [inherited]

Transfers all iterators x that reference from sequence, are not singular, and for which __pred(x) returns true. __pred will be invoked with the normal iterators nested in the safe ones.


πŸ’Ž Member Data Documentation πŸ’Ž

  • _Safe_iterator_base* __gnu_debug::_Safe_sequence_base::_M_const_iterators β€” [inherited] β€” The list of constant iterators that reference this container.

Referenced by __gnu_debug::_Safe_sequence< _Sequence >::_M_transfer_from_if().

  • _Safe_iterator_base* __gnu_debug::_Safe_sequence_base::_M_iterators β€” [inherited] β€” The list of mutable iterators that reference this container.

Referenced by __gnu_debug::_Safe_sequence< _Sequence >::_M_transfer_from_if().

  • unsigned int __gnu_debug::_Safe_sequence_base::_M_version β€” [mutable], [inherited] β€” The container version number. This number may never be 0.

Referenced by __gnu_debug::_Safe_sequence_base::_M_invalidate_all(), __gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator=(), __gnu_debug::_Safe_local_iterator< _Iterator, _Sequence >::operator=(), __gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator=(), and __gnu_debug::_Safe_local_iterator< _Iterator, _Sequence >::operator=().


⭐ Author ⭐

Generated automatically by Doxygen for libstdc++ from the source code. Not me writing this by hand at 2 a.m., obviously. πŸ™ˆ


Cute lil sign-off: the source/version is libstdc++, the manual section is 3cxx, and the date slot is giving mysterious timeless energy. Bye bestie, drink water and keep your iterators valid πŸ’œπŸŽ€πŸ«Ά
πŸ“¦ where this page comes from