40 if (std::__is_constant_evaluated())
43 typedef typename _Sequence::iterator
iterator;
44 typedef typename _Sequence::const_iterator const_iterator;
47 for (_Safe_iterator_base* __iter =
_M_iterators; __iter;)
50 __iter = __iter->_M_next;
51 if (!__victim->_M_singular() && __pred(__victim->base()))
53 __victim->_M_invalidate();
59 const_iterator* __victim =
static_cast<const_iterator*
>(__iter2);
60 __iter2 = __iter2->_M_next;
61 if (!__victim->_M_singular() && __pred(__victim->base()))
63 __victim->_M_invalidate();
77 typedef typename _Sequence::iterator
iterator;
78 typedef typename _Sequence::const_iterator const_iterator;
80 _Safe_iterator_base* __transfered_iterators = 0;
81 _Safe_iterator_base* __transfered_const_iterators = 0;
82 _Safe_iterator_base* __last_iterator = 0;
83 _Safe_iterator_base* __last_const_iterator = 0;
88 for (_Safe_iterator_base* __iter = __from.
_M_iterators; __iter;)
90 _Safe_iterator_base* __victim_base = __iter;
92 __iter = __iter->_M_next;
93 if (!__victim->_M_singular() && __pred(__victim->base()))
95 __victim->_M_detach_single();
96 if (__transfered_iterators)
98 __victim_base->
_M_next = __transfered_iterators;
99 __transfered_iterators->
_M_prior = __victim_base;
102 __last_iterator = __victim_base;
105 __transfered_iterators = __victim_base;
112 _Safe_iterator_base* __victim_base = __iter2;
113 const_iterator* __victim =
114 static_cast<const_iterator*
>(__victim_base);
115 __iter2 = __iter2->_M_next;
116 if (!__victim->_M_singular() && __pred(__victim->base()))
118 __victim->_M_detach_single();
119 if (__transfered_const_iterators)
121 __victim_base->
_M_next = __transfered_const_iterators;
122 __transfered_const_iterators->
_M_prior = __victim_base;
125 __last_const_iterator = __victim;
128 __transfered_const_iterators = __victim_base;
134 if (__last_iterator || __last_const_iterator)
136 __gnu_cxx::__scoped_lock sentry(this->_M_get_mutex());
139 if (this->_M_iterators)
141 this->_M_iterators->_M_prior = __last_iterator;
142 __last_iterator->
_M_next = this->_M_iterators;
144 this->_M_iterators = __transfered_iterators;
146 if (__last_const_iterator)
148 if (this->_M_const_iterators)
150 this->_M_const_iterators->_M_prior = __last_const_iterator;
151 __last_const_iterator->
_M_next = this->_M_const_iterators;
153 this->_M_const_iterators = __transfered_const_iterators;