132 _M_cont()
const noexcept
133 {
return *
static_cast<const _Container*
>(
this); }
140#ifdef __glibcxx_node_extract
141 template<
typename _ExtractKey,
typename _Source>
142 friend struct ::__gnu_debug::_UContInvalidatePred;
144 template<
typename _ExtractKey,
typename _Source>
145 friend struct ::__gnu_debug::_UMContInvalidatePred;
147 template<
typename _Source,
typename _Inval
idatePred>
148 friend struct ::__gnu_debug::_UContMergeGuard;
150 template<
typename _ExtractKey,
typename _Source>
151 static _UContMergeGuard<_Source,
152 _UContInvalidatePred<_ExtractKey, _Source>>
155 typedef _UContInvalidatePred<_ExtractKey, _Source> _InvalidatePred;
156 return _UContMergeGuard<_Source, _InvalidatePred>(__src);
159 template<
typename _ExtractKey,
typename _Source>
160 static _UContMergeGuard<_Source,
161 _UMContInvalidatePred<_ExtractKey, _Source>>
164 typedef _UMContInvalidatePred<_ExtractKey, _Source> _InvalidatePred;
165 return _UContMergeGuard<_Source, _InvalidatePred>(__src);
173 auto __end = _M_cont()._M_base().cend();
175 [__end](
decltype(__end) __it)
176 {
return __it != __end; },
179 auto __local_end = _M_cont()._M_base().cend(0);
180 _M_invalidate_local_if(
181 [__local_end](
decltype(__local_end) __it)
182 {
return __it != __local_end; },
186 template<
typename _Predicate>
188 _M_invalidate_all_if(_Predicate __pred)
191 _M_invalidate_if(__pred, sentry);
192 _M_invalidate_local_if(__pred, sentry);
195 template<
typename _VictimIt>
197 _M_invalidate(_VictimIt __victim)
200 _M_invalidate(__victim, sentry);
203 template<
typename _VictimIt>
207 auto __end = _M_cont()._M_base().cend();
209 [__victim](
decltype(__end) __it)
210 {
return __it == __victim; },
213 auto __local_end = _M_cont()._M_base().cend(0);
214 _M_invalidate_local_if(
215 [__victim](
decltype(__local_end) __it)
216 {
return __it == __victim; },
225 template<
typename _Predicate>
233 template<
typename _Predicate>
235 _M_invalidate_local_if(_Predicate __pred,