.TH "__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >" 3cxx "libstdc++" \" -*- nroff -*- .ad l .nh .SH NAME __gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category > \- Safe iterator wrapper\&. .SH SYNOPSIS .br .PP .PP \fC#include \fP .PP Inherits _Iterator, and \fB__gnu_debug::_Safe_iterator_base\fP\&. .PP Inherited by __gnu_debug::_Safe_iterator< _Iterator, _Sequence, std::random_access_iterator_tag >\&. .SS "Public Types" .in +1c .ti -1c .RI "typedef \fB_Safe_iterator\fP< _Iterator, _Sequence, iterator_category > \fB_Self\fP" .br .ti -1c .RI "typedef _Traits::difference_type \fBdifference_type\fP" .br .ti -1c .RI "typedef _Traits::iterator_category \fBiterator_category\fP" .br .ti -1c .RI "typedef _Iterator \fBiterator_type\fP" .br .ti -1c .RI "typedef _Traits::pointer \fBpointer\fP" .br .ti -1c .RI "typedef _Traits::reference \fBreference\fP" .br .ti -1c .RI "typedef _Traits::value_type \fBvalue_type\fP" .br .in -1c .SS "Public Member Functions" .in +1c .ti -1c .RI "\fB_Safe_iterator\fP () noexcept" .br .ti -1c .RI "\fB_Safe_iterator\fP (_Iterator __i, const \fB_Safe_sequence_base\fP *__seq) noexcept" .br .RI "Safe iterator construction from an unsafe iterator and its sequence\&. " .ti -1c .RI "\fB_Safe_iterator\fP (\fB_Safe_iterator\fP &&__x) noexcept" .br .RI "Move construction\&. " .ti -1c .RI "\fB_Safe_iterator\fP (const \fB_Safe_iterator\fP &__x) noexcept" .br .RI "Copy construction\&. " .ti -1c .RI "template \fB_Safe_iterator\fP (const \fB_Safe_iterator\fP< _MutableIterator, _Sequence, typename __gnu_cxx::__enable_if< _IsConstant::__value &&std::__are_same< _MutableIterator, _OtherIterator >::__value, _Category >::__type > &__x) noexcept" .br .RI "Converting constructor from a mutable iterator to a constant iterator\&. " .ti -1c .RI "void \fB_M_attach\fP (\fB_Safe_sequence_base\fP *__seq)" .br .ti -1c .RI "void \fB_M_attach_single\fP (\fB_Safe_sequence_base\fP *__seq)" .br .ti -1c .RI "bool \fB_M_attached_to\fP (const \fB_Safe_sequence_base\fP *__seq) const" .br .ti -1c .RI "bool \fB_M_before_dereferenceable\fP () const" .br .RI "Is the iterator before a dereferenceable one? " .ti -1c .RI "template bool \fB_M_can_advance\fP (const \fBstd::pair\fP< _Diff, \fB_Distance_precision\fP > &__dist, int __way) const" .br .ti -1c .RI "bool \fB_M_can_advance\fP (difference_type __n, bool __strict=false) const" .br .ti -1c .RI "bool \fB_M_can_compare\fP (const \fB_Safe_iterator_base\fP &__x) const throw ()" .br .ti -1c .RI "bool \fB_M_dereferenceable\fP () const" .br .RI "Is the iterator dereferenceable? " .ti -1c .RI "void \fB_M_detach_single\fP () throw ()" .br .ti -1c .RI "_Distance_traits< _Iterator >::__type \fB_M_get_distance_from_begin\fP () const" .br .ti -1c .RI "_Distance_traits< _Iterator >::__type \fB_M_get_distance_to\fP (const \fB_Safe_iterator\fP &__rhs) const" .br .ti -1c .RI "_Distance_traits< _Iterator >::__type \fB_M_get_distance_to_end\fP () const" .br .ti -1c .RI "__gnu_cxx::__conditional_type< _IsConstant::__value, const_Sequence *, _Sequence * >::__type \fB_M_get_sequence\fP () const" .br .ti -1c .RI "bool \fB_M_incrementable\fP () const" .br .RI "Is the iterator incrementable? " .ti -1c .RI "void \fB_M_invalidate\fP ()" .br .ti -1c .RI "bool \fB_M_is_before_begin\fP () const" .br .RI "Is this iterator equal to the sequence's before_begin() iterator if any? " .ti -1c .RI "bool \fB_M_is_begin\fP () const" .br .RI "Is this iterator equal to the sequence's begin() iterator? " .ti -1c .RI "bool \fB_M_is_beginnest\fP () const" .br .RI "Is this iterator equal to the sequence's before_begin() iterator if any or begin() otherwise? " .ti -1c .RI "bool \fB_M_is_end\fP () const" .br .RI "Is this iterator equal to the sequence's end() iterator? " .ti -1c .RI "void \fB_M_reset\fP () throw ()" .br .ti -1c .RI "bool \fB_M_singular\fP () const throw ()" .br .ti -1c .RI "void \fB_M_unlink\fP () throw ()" .br .ti -1c .RI "bool \fB_M_valid_range\fP (const \fB_Safe_iterator\fP &__rhs, \fBstd::pair\fP< difference_type, \fB_Distance_precision\fP > &__dist, bool __check_dereferenceable=true) const" .br .ti -1c .RI "const _Iterator & \fBbase\fP () const noexcept" .br .ti -1c .RI "_Iterator & \fBbase\fP () noexcept" .br .RI "Return the underlying iterator\&. " .ti -1c .RI "\fBoperator _Iterator\fP () const noexcept" .br .RI "Conversion to underlying non-debug iterator to allow better interaction with non-debug containers\&. " .ti -1c .RI "reference \fBoperator*\fP () const noexcept" .br .RI "Iterator dereference\&. " .ti -1c .RI "\fB_Safe_iterator\fP & \fBoperator++\fP () noexcept" .br .RI "Iterator preincrement\&. " .ti -1c .RI "\fB_Safe_iterator\fP \fBoperator++\fP (int) noexcept" .br .RI "Iterator postincrement\&. " .ti -1c .RI "pointer \fBoperator\->\fP () const noexcept" .br .RI "Iterator dereference\&. " .ti -1c .RI "\fB_Safe_iterator\fP & \fBoperator=\fP (\fB_Safe_iterator\fP &&__x) noexcept" .br .RI "Move assignment\&. " .ti -1c .RI "\fB_Safe_iterator\fP & \fBoperator=\fP (const \fB_Safe_iterator\fP &__x) noexcept" .br .RI "Copy assignment\&. " .in -1c .SS "Static Public Member Functions" .in +1c .ti -1c .RI "static constexpr bool \fB_S_constant\fP ()" .br .RI "Determine if this is a constant iterator\&. " .in -1c .SS "Public Attributes" .in +1c .ti -1c .RI "\fB_Safe_iterator_base\fP * \fB_M_next\fP" .br .ti -1c .RI "\fB_Safe_iterator_base\fP * \fB_M_prior\fP" .br .ti -1c .RI "\fB_Safe_sequence_base\fP * \fB_M_sequence\fP" .br .ti -1c .RI "unsigned int \fB_M_version\fP" .br .in -1c .SS "Protected Types" .in +1c .ti -1c .RI "typedef std::__are_same< typename _Sequence::_Base::const_iterator, _Iterator > \fB_IsConstant\fP" .br .ti -1c .RI "typedef __gnu_cxx::__conditional_type< _IsConstant::__value, typename_Sequence::_Base::iterator, typename_Sequence::_Base::const_iterator >::__type \fB_OtherIterator\fP" .br .in -1c .SS "Protected Member Functions" .in +1c .ti -1c .RI "\fB_Safe_iterator\fP (_Iterator __i, \fB_Safe_sequence_base\fP *__seq, _Attach_single) noexcept" .br .ti -1c .RI "void \fB_M_attach\fP (\fB_Safe_sequence_base\fP *__seq, bool __constant)" .br .ti -1c .RI "void \fB_M_attach_single\fP (\fB_Safe_sequence_base\fP *__seq, bool __constant) throw ()" .br .ti -1c .RI "void \fB_M_detach\fP ()" .br .ti -1c .RI "__gnu_cxx::__mutex & \fB_M_get_mutex\fP () throw ()" .br .in -1c .SS "Friends" .in +1c .ti -1c .RI "template bool \fBoperator!=\fP (const \fB_Self\fP &__lhs, const \fB_Safe_iterator\fP< _IteR, _Sequence, iterator_category > &__rhs) noexcept" .br .ti -1c .RI "bool \fBoperator!=\fP (const \fB_Self\fP &__lhs, const \fB_Self\fP &__rhs) noexcept" .br .ti -1c .RI "template bool \fBoperator==\fP (const \fB_Self\fP &__lhs, const \fB_Safe_iterator\fP< _IteR, _Sequence, iterator_category > &__rhs) noexcept" .br .ti -1c .RI "bool \fBoperator==\fP (const \fB_Self\fP &__lhs, const \fB_Self\fP &__rhs) noexcept" .br .in -1c .SH "Detailed Description" .PP .SS "template::iterator_category> .br class __gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >"Safe iterator wrapper\&. The class template _Safe_iterator is a wrapper around an iterator that tracks the iterator's movement among sequences and checks that operations performed on the 'safe' iterator are legal\&. In additional to the basic iterator operations (which are validated, and then passed to the underlying iterator), _Safe_iterator has member functions for iterator invalidation, attaching/detaching the iterator from sequences, and querying the iterator's state\&. .PP Note that _Iterator must be the first base class so that it gets initialized before the iterator is being attached to the container's list of iterators and it is being detached before _Iterator get destroyed\&. Otherwise it would result in a data race\&. .SH "Constructor & Destructor Documentation" .PP .SS "template::iterator_category> \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::_Safe_iterator ()\fC [inline]\fP, \fC [noexcept]\fP" .PP \fBPostcondition\fP .RS 4 the iterator is singular and unattached .RE .PP .PP Referenced by \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator++()\fP\&. .SS "template::iterator_category> \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::_Safe_iterator (_Iterator __i, const \fB_Safe_sequence_base\fP * __seq)\fC [inline]\fP, \fC [noexcept]\fP" .PP Safe iterator construction from an unsafe iterator and its sequence\&. .PP \fBPrecondition\fP .RS 4 \fCseq\fP is not NULL .RE .PP \fBPostcondition\fP .RS 4 this is not singular .RE .PP .PP References \fB__gnu_debug::_Safe_iterator_base::_M_singular()\fP\&. .SS "template::iterator_category> \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::_Safe_iterator (const \fB_Safe_iterator\fP< _Iterator, _Sequence, _Category > & __x)\fC [inline]\fP, \fC [noexcept]\fP" .PP Copy construction\&. .PP References \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_attach()\fP\&. .SS "template::iterator_category> \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::_Safe_iterator (\fB_Safe_iterator\fP< _Iterator, _Sequence, _Category > && __x)\fC [inline]\fP, \fC [noexcept]\fP" .PP Move construction\&. .PP \fBPostcondition\fP .RS 4 __x is singular and unattached .RE .PP .PP References \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_attach()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::base()\fP, and \fBstd::swap()\fP\&. .SS "template::iterator_category> template \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::_Safe_iterator (const \fB_Safe_iterator\fP< _MutableIterator, _Sequence, typename __gnu_cxx::__enable_if< _IsConstant::__value &&std::__are_same< _MutableIterator, _OtherIterator >::__value, _Category >::__type > & __x)\fC [inline]\fP, \fC [noexcept]\fP" .PP Converting constructor from a mutable iterator to a constant iterator\&. .PP References \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_attach()\fP\&. .SH "Member Function Documentation" .PP .SS "template::iterator_category> void \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::_M_attach (\fB_Safe_sequence_base\fP * __seq)\fC [inline]\fP" Attach iterator to the given sequence\&. .PP References \fB__gnu_debug::_Safe_iterator_base::_M_attach()\fP, and \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_S_constant()\fP\&. .PP Referenced by \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_Safe_iterator()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_Safe_iterator()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_Safe_iterator()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator=()\fP, and \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator=()\fP\&. .SS "void __gnu_debug::_Safe_iterator_base::_M_attach (\fB_Safe_sequence_base\fP * __seq, bool __constant)\fC [protected]\fP, \fC [inherited]\fP" Attaches this iterator to the given sequence, detaching it from whatever sequence it was attached to originally\&. If the new sequence is the NULL pointer, the iterator is left unattached\&. .PP Referenced by \fB__gnu_debug::_Safe_iterator_base::_Safe_iterator_base()\fP, \fB__gnu_debug::_Safe_iterator_base::_Safe_iterator_base()\fP, and \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_attach()\fP\&. .SS "template::iterator_category> void \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::_M_attach_single (\fB_Safe_sequence_base\fP * __seq)\fC [inline]\fP" Likewise, but not thread-safe\&. .PP References \fB__gnu_debug::_Safe_iterator_base::_M_attach_single()\fP, and \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_S_constant()\fP\&. .SS "void __gnu_debug::_Safe_iterator_base::_M_attach_single (\fB_Safe_sequence_base\fP * __seq, bool __constant)\fC [protected]\fP, \fC [inherited]\fP" Likewise, but not thread-safe\&. .PP Referenced by \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_attach_single()\fP\&. .SS "bool __gnu_debug::_Safe_iterator_base::_M_attached_to (const \fB_Safe_sequence_base\fP * __seq) const\fC [inline]\fP, \fC [inherited]\fP" Determines if we are attached to the given sequence\&. .PP References \fB__gnu_debug::_Safe_iterator_base::_M_sequence\fP\&. .SS "template::iterator_category> bool \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::_M_before_dereferenceable () const\fC [inline]\fP" .PP Is the iterator before a dereferenceable one? .PP References \fB__gnu_debug::__base()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_incrementable()\fP, and \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::base()\fP\&. .SS "bool __gnu_debug::_Safe_iterator_base::_M_can_compare (const \fB_Safe_iterator_base\fP & __x) const\fC [inherited]\fP" Can we compare this iterator to the given iterator \fC__x\fP? Returns true if both iterators are nonsingular and reference the same sequence\&. .SS "template::iterator_category> bool \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::_M_dereferenceable () const\fC [inline]\fP" .PP Is the iterator dereferenceable? .PP References \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_is_before_begin()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_is_end()\fP, and \fB__gnu_debug::_Safe_iterator_base::_M_singular()\fP\&. .PP Referenced by \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator*()\fP, and \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator\->()\fP\&. .SS "void __gnu_debug::_Safe_iterator_base::_M_detach ()\fC [protected]\fP, \fC [inherited]\fP" Detach the iterator for whatever sequence it is attached to, if any\&. .PP Referenced by \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator=()\fP, and \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator=()\fP\&. .SS "void __gnu_debug::_Safe_iterator_base::_M_detach_single ()\fC [inherited]\fP" Likewise, but not thread-safe\&. .PP Referenced by \fB__gnu_debug::_Safe_sequence< _Sequence >::_M_transfer_from_if()\fP\&. .SS "__gnu_cxx::__mutex & __gnu_debug::_Safe_iterator_base::_M_get_mutex ()\fC [protected]\fP, \fC [inherited]\fP" For use in _Safe_iterator\&. .PP Referenced by \fB__gnu_debug::_Safe_local_iterator< _Iterator, _Sequence >::operator++()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator++()\fP, \fB__gnu_debug::_Safe_local_iterator< _Iterator, _Sequence >::operator++()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator++()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator=()\fP, \fB__gnu_debug::_Safe_local_iterator< _Iterator, _Sequence >::operator=()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator=()\fP, and \fB__gnu_debug::_Safe_local_iterator< _Iterator, _Sequence >::operator=()\fP\&. .SS "template::iterator_category> bool \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::_M_incrementable () const\fC [inline]\fP" .PP Is the iterator incrementable? .PP References \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_is_end()\fP, and \fB__gnu_debug::_Safe_iterator_base::_M_singular()\fP\&. .PP Referenced by \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_before_dereferenceable()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator++()\fP, and \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator++()\fP\&. .SS "void __gnu_debug::_Safe_iterator_base::_M_invalidate ()\fC [inline]\fP, \fC [inherited]\fP" Invalidate the iterator, making it singular\&. .PP References \fB__gnu_debug::_Safe_iterator_base::_M_version\fP\&. .SS "template::iterator_category> bool \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::_M_is_before_begin () const\fC [inline]\fP" .PP Is this iterator equal to the sequence's before_begin() iterator if any? .PP Referenced by \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_dereferenceable()\fP\&. .SS "template::iterator_category> bool \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::_M_is_begin () const\fC [inline]\fP" .PP Is this iterator equal to the sequence's begin() iterator? .PP References \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::base()\fP\&. .SS "template::iterator_category> bool \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::_M_is_beginnest () const\fC [inline]\fP" .PP Is this iterator equal to the sequence's before_begin() iterator if any or begin() otherwise? .SS "template::iterator_category> bool \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::_M_is_end () const\fC [inline]\fP" .PP Is this iterator equal to the sequence's end() iterator? .PP References \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::base()\fP\&. .PP Referenced by \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_dereferenceable()\fP, and \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_incrementable()\fP\&. .SS "void __gnu_debug::_Safe_iterator_base::_M_reset ()\fC [inherited]\fP" Reset all member variables .SS "bool __gnu_debug::_Safe_iterator_base::_M_singular () const\fC [inherited]\fP" Is this iterator singular? .PP Referenced by \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_Safe_iterator()\fP, \fB__gnu_debug::_Safe_local_iterator< _Iterator, _Sequence >::_Safe_local_iterator()\fP, \fB__gnu_debug::__check_singular_aux()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_dereferenceable()\fP, \fB__gnu_debug::_Safe_local_iterator< _Iterator, _Sequence >::_M_dereferenceable()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_incrementable()\fP, \fB__gnu_debug::_Safe_local_iterator< _Iterator, _Sequence >::_M_incrementable()\fP, and \fB__gnu_debug::_Safe_local_iterator< _Iterator, _Sequence >::operator=()\fP\&. .SS "void __gnu_debug::_Safe_iterator_base::_M_unlink ()\fC [inline]\fP, \fC [inherited]\fP" Unlink itself .PP References \fB__gnu_debug::_Safe_iterator_base::_M_next\fP, and \fB__gnu_debug::_Safe_iterator_base::_M_prior\fP\&. .SS "template::iterator_category> static constexpr bool \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::_S_constant ()\fC [inline]\fP, \fC [static]\fP, \fC [constexpr]\fP" .PP Determine if this is a constant iterator\&. .PP Referenced by \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_attach()\fP, and \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_attach_single()\fP\&. .SS "template::iterator_category> _Iterator & \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::base ()\fC [inline]\fP, \fC [noexcept]\fP" .PP Return the underlying iterator\&. .PP Referenced by \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_Safe_iterator()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_before_dereferenceable()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_is_begin()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_is_end()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator*()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator++()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator++()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator\->()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator=()\fP, and \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator=()\fP\&. .SS "template::iterator_category> \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::operator _Iterator () const\fC [inline]\fP, \fC [noexcept]\fP" .PP Conversion to underlying non-debug iterator to allow better interaction with non-debug containers\&. .SS "template::iterator_category> reference \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::operator* () const\fC [inline]\fP, \fC [noexcept]\fP" .PP Iterator dereference\&. .PP \fBPrecondition\fP .RS 4 iterator is dereferenceable .RE .PP .PP References \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_dereferenceable()\fP, and \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::base()\fP\&. .SS "template::iterator_category> \fB_Safe_iterator\fP & \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::operator++ ()\fC [inline]\fP, \fC [noexcept]\fP" .PP Iterator preincrement\&. .PP \fBPrecondition\fP .RS 4 iterator is incrementable .RE .PP .PP References \fB__gnu_debug::_Safe_iterator_base::_M_get_mutex()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_incrementable()\fP, and \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::base()\fP\&. .SS "template::iterator_category> \fB_Safe_iterator\fP \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::operator++ (int)\fC [inline]\fP, \fC [noexcept]\fP" .PP Iterator postincrement\&. .PP \fBPrecondition\fP .RS 4 iterator is incrementable .RE .PP .PP References \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_Safe_iterator()\fP, \fB__gnu_debug::_Safe_iterator_base::_M_get_mutex()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_incrementable()\fP, \fB__gnu_debug::_Safe_iterator_base::_M_sequence\fP, and \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::base()\fP\&. .SS "template::iterator_category> pointer \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::operator\-> () const\fC [inline]\fP, \fC [noexcept]\fP" .PP Iterator dereference\&. .PP \fBPrecondition\fP .RS 4 iterator is dereferenceable .RE .PP .PP References \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_dereferenceable()\fP, and \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::base()\fP\&. .SS "template::iterator_category> \fB_Safe_iterator\fP & \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::operator= (\fB_Safe_iterator\fP< _Iterator, _Sequence, _Category > && __x)\fC [inline]\fP, \fC [noexcept]\fP" .PP Move assignment\&. .PP \fBPostcondition\fP .RS 4 __x is singular and unattached .RE .PP .PP References \fBstd::__addressof()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_attach()\fP, \fB__gnu_debug::_Safe_iterator_base::_M_detach()\fP, \fB__gnu_debug::_Safe_iterator_base::_M_get_mutex()\fP, \fB__gnu_debug::_Safe_iterator_base::_M_sequence\fP, \fB__gnu_debug::_Safe_iterator_base::_M_version\fP, and \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::base()\fP\&. .SS "template::iterator_category> \fB_Safe_iterator\fP & \fB__gnu_debug::_Safe_iterator\fP< _Iterator, _Sequence, _Category >::operator= (const \fB_Safe_iterator\fP< _Iterator, _Sequence, _Category > & __x)\fC [inline]\fP, \fC [noexcept]\fP" .PP Copy assignment\&. .PP References \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::_M_attach()\fP, \fB__gnu_debug::_Safe_iterator_base::_M_detach()\fP, \fB__gnu_debug::_Safe_iterator_base::_M_get_mutex()\fP, \fB__gnu_debug::_Safe_iterator_base::_M_sequence\fP, \fB__gnu_debug::_Safe_iterator_base::_M_version\fP, and \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::base()\fP\&. .SH "Member Data Documentation" .PP .SS "\fB_Safe_iterator_base\fP* __gnu_debug::_Safe_iterator_base::_M_next\fC [inherited]\fP" Pointer to the next iterator in the sequence's list of iterators\&. Only valid when _M_sequence != NULL\&. .PP Referenced by \fB__gnu_debug::_Safe_sequence< _SafeSequence >::_M_invalidate_if()\fP, \fB__gnu_debug::_Safe_sequence< _Sequence >::_M_transfer_from_if()\fP, and \fB__gnu_debug::_Safe_iterator_base::_M_unlink()\fP\&. .SS "\fB_Safe_iterator_base\fP* __gnu_debug::_Safe_iterator_base::_M_prior\fC [inherited]\fP" Pointer to the previous iterator in the sequence's list of iterators\&. Only valid when _M_sequence != NULL\&. .PP Referenced by \fB__gnu_debug::_Safe_sequence< _SafeSequence >::_M_invalidate_if()\fP, \fB__gnu_debug::_Safe_sequence< _Sequence >::_M_transfer_from_if()\fP, and \fB__gnu_debug::_Safe_iterator_base::_M_unlink()\fP\&. .SS "\fB_Safe_sequence_base\fP* __gnu_debug::_Safe_iterator_base::_M_sequence\fC [inherited]\fP" The sequence this iterator references; may be NULL to indicate a singular iterator\&. .PP Referenced by \fB__gnu_debug::_Safe_iterator_base::_Safe_iterator_base()\fP, \fB__gnu_debug::_Safe_local_iterator_base::_Safe_local_iterator_base()\fP, \fB__gnu_debug::_Safe_iterator_base::_M_attached_to()\fP, \fB__gnu_debug::_Safe_sequence< _Sequence >::_M_transfer_from_if()\fP, \fB__gnu_debug::_Safe_local_iterator< _Iterator, _Sequence >::operator++()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator++()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator=()\fP, \fB__gnu_debug::_Safe_local_iterator< _Iterator, _Sequence >::operator=()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator=()\fP, and \fB__gnu_debug::_Safe_local_iterator< _Iterator, _Sequence >::operator=()\fP\&. .SS "unsigned int __gnu_debug::_Safe_iterator_base::_M_version\fC [inherited]\fP" The version number of this iterator\&. The sentinel value 0 is used to indicate an invalidated iterator (i\&.e\&., one that is singular because of an operation on the container)\&. This version number must equal the version number in the sequence referenced by _M_sequence for the iterator to be non-singular\&. .PP Referenced by \fB__gnu_debug::_Safe_iterator_base::_M_invalidate()\fP, \fB__gnu_debug::_Safe_sequence< _Sequence >::_M_transfer_from_if()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator=()\fP, \fB__gnu_debug::_Safe_local_iterator< _Iterator, _Sequence >::operator=()\fP, \fB__gnu_debug::_Safe_iterator< _Iterator, _Sequence, _Category >::operator=()\fP, and \fB__gnu_debug::_Safe_local_iterator< _Iterator, _Sequence >::operator=()\fP\&. .SH "Author" .PP Generated automatically by Doxygen for libstdc++ from the source code\&.