50 template <invocable<
typename STL_CONTAINER_OF_T::const_iterator,
typename STL_CONTAINER_OF_T::const_iterator> POINT_TO_SAME_THING>
51 void STLContainerWrapper<STL_CONTAINER_OF_T>::MoveIteratorHereAfterClone (ForwardIterator* pi,
const STLContainerWrapper* movedFrom,
53 requires (convertible_to<invoke_result_t<POINT_TO_SAME_THING, typename STL_CONTAINER_OF_T::const_iterator, typename STL_CONTAINER_OF_T::const_iterator>,
bool>)
71 Assert (newI != newE);
72 Assert (oldI != oldE);
74 Assert (oldI == pi->fStdIterator_);
75 pi->fStdIterator_ = newI;
78 template <
typename STL_CONTAINER_OF_T>
79 template <invocable<
typename STL_CONTAINER_OF_T::value_type> FUNCTION>
82 AssertExternallySynchronizedMutex::ReadContext declareContext{*
this};
83 for (
auto i = this->begin (); i != this->end (); ++i) {
87 template <
typename STL_CONTAINER_OF_T>
88 template <predicate<
typename STL_CONTAINER_OF_T ::value_type> FUNCTION>
91 AssertExternallySynchronizedMutex::ReadContext declareContext{*
this};
92 for (
auto i = this->begin (); i != this->end (); ++i) {
99 template <
typename STL_CONTAINER_OF_T>
100 template <predicate<
typename STL_CONTAINER_OF_T ::value_type> FUNCTION>
104 for (
auto i = this->begin (); i != this->end (); ++i) {
105 if (firstThat (*i)) {
111 template <
typename STL_CONTAINER_OF_T>
112 template <predicate<
typename STL_CONTAINER_OF_T::value_type> PREDICATE>
113 inline bool STLContainerWrapper<STL_CONTAINER_OF_T>::FindIf (PREDICATE&& pred)
const
115 AssertExternallySynchronizedMutex::ReadContext declareContext{*
this};
116 return find_if (this->begin (), this->end (), forward<PREDICATE> (pred)) != this->end ();
118 template <
typename STL_CONTAINER_OF_T>
119 inline void STLContainerWrapper<STL_CONTAINER_OF_T>::Invariant () const noexcept
122 template <
typename STL_CONTAINER_OF_T>
123 inline auto STLContainerWrapper<STL_CONTAINER_OF_T>::remove_constness (const_iterator it) -> iterator
126 if constexpr (Private_::IsStdForwardList<STL_CONTAINER_OF_T> ()) {
127 return this->erase_after (it, it);
130 return this->erase (it, it);
139 template <
typename STL_CONTAINER_OF_T>
142 , fStdIterator_{startAt}
146 template <
typename STL_CONTAINER_OF_T>
151 template <
typename STL_CONTAINER_OF_T>
156 template <
typename STL_CONTAINER_OF_T>
159#if qStroika_Foundation_Containers_DataStructures_STLContainerWrapper_IncludeSlowDebugChecks_
160 AssertExternallySynchronizedMutex::ReadContext declareContext{*fData_};
163 return fStdIterator_ == fData_->end ();
165 template <
typename STL_CONTAINER_OF_T>
166 inline auto STLContainerWrapper<STL_CONTAINER_OF_T>::ForwardIterator::operator++ () noexcept -> ForwardIterator&
168 Require (not Done ());
172 template <
typename STL_CONTAINER_OF_T>
173 inline auto STLContainerWrapper<STL_CONTAINER_OF_T>::ForwardIterator::operator* () const -> const value_type&
175 AssertExternallySynchronizedMutex::ReadContext declareContext{*fData_};
177 Require (not Done ());
178 return *fStdIterator_;
180 template <
typename STL_CONTAINER_OF_T>
181 inline auto STLContainerWrapper<STL_CONTAINER_OF_T>::ForwardIterator::operator->() const -> const value_type*
183 AssertExternallySynchronizedMutex::ReadContext declareContext{*fData_};
185 Require (not Done ());
186 return &*fStdIterator_;
188 template <
typename STL_CONTAINER_OF_T>
191 AssertExternallySynchronizedMutex::ReadContext declareContext{*fData_};
193 return static_cast<size_t> (std::distance (fData_->begin (), fStdIterator_));
195 template <
typename STL_CONTAINER_OF_T>
198 AssertExternallySynchronizedMutex::ReadContext declareContext{*fData_};
199 return fStdIterator_;
201 template <
typename STL_CONTAINER_OF_T>
202 inline void STLContainerWrapper<STL_CONTAINER_OF_T>::ForwardIterator::SetUnderlyingIteratorRep (
UnderlyingIteratorRep l)
204 AssertExternallySynchronizedMutex::ReadContext declareContext{*fData_};
207 template <
typename STL_CONTAINER_OF_T>
210#if qStroika_Foundation_Debug_AssertionsChecked
211 Require (data == fData_);
214 template <
typename STL_CONTAINER_OF_T>
217 AssertExternallySynchronizedMutex::ReadContext declareContext{*fData_};
218 return fStdIterator_ == rhs.fStdIterator_;
conditional_t<(sizeof(CHECK_T)<=2 *sizeof(void *)) and is_trivially_copyable_v< CHECK_T >, CHECK_T, const CHECK_T & > ArgByValueType
This is an alias for 'T' - but how we want to pass it on stack as formal parameter.