68 template <
typename T,
typename DATASTRUCTURE_CONTAINER,
typename DATASTRUCTURE_CONTAINER_ITERATOR =
typename DATASTRUCTURE_CONTAINER::ForwardIterator,
typename DATASTRUCTURE_CONTAINER_VALUE = T>
76 using DataStructureImplValueType_ = DATASTRUCTURE_CONTAINER_VALUE;
82 template <
typename... ADDITIONAL_BACKEND_ITERATOR_CTOR_ARGUMENTS>
83 explicit IteratorImplHelper_ (
const DATASTRUCTURE_CONTAINER* data,
const ContainerDebugChangeCounts_* changeCounter =
nullptr,
84 ADDITIONAL_BACKEND_ITERATOR_CTOR_ARGUMENTS&&... args)
85 requires (constructible_from<DATASTRUCTURE_CONTAINER_ITERATOR,
const DATASTRUCTURE_CONTAINER*, ADDITIONAL_BACKEND_ITERATOR_CTOR_ARGUMENTS...>);
86 template <
typename... ADDITIONAL_BACKEND_ITERATOR_CTOR_ARGUMENTS>
87 explicit IteratorImplHelper_ (
const ContainerDebugChangeCounts_* changeCounter =
nullptr, ADDITIONAL_BACKEND_ITERATOR_CTOR_ARGUMENTS&&... args)
88 requires (constructible_from<DATASTRUCTURE_CONTAINER_ITERATOR, ADDITIONAL_BACKEND_ITERATOR_CTOR_ARGUMENTS...>);
95 virtual unique_ptr<typename Iterator<T>::IRep>
Clone ()
const override;
96 virtual void More (optional<T>* result,
bool advance)
override;
98#if qStroika_Foundation_Debug_AssertionsChecked
101 virtual void Invariant ()
const noexcept override;
118 mutable DATASTRUCTURE_CONTAINER_ITERATOR fIterator{};
119#if qStroika_Foundation_Debug_AssertionsChecked
120 const ContainerDebugChangeCounts_* fChangeCounter{
nullptr};
121 ContainerDebugChangeCounts_::ChangeCountType fLastCapturedChangeCount{};
conditional_t< qStroika_Foundation_Memory_PreferBlockAllocation and andTrueCheck, BlockAllocationUseHelper< T >, Common::Empty > UseBlockAllocationIfAppropriate
Use this to enable block allocation for a particular class. Beware of subclassing.