4#ifndef _Stroika_Foundation_Traversal_IterableFromIterator_h_
5#define _Stroika_Foundation_Traversal_IterableFromIterator_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
9#include "Stroika/Foundation/Common/Common.h"
22namespace Stroika::Foundation::Traversal {
71 template <
typename T,
typename NEW_ITERATOR_REP_TYPE =
void,
typename CONTEXT_FOR_EACH_ITERATOR =
void>
77 class _Rep :
public Iterable<T>::_IRep {
88#if qStroika_Foundation_Debug_AssertionsChecked
96 shared_ptr<unsigned int> fCountRunning = make_shared<unsigned int> (0);
115 virtual Iterator<T> MakeIterator ()
const override;
129 template <
typename T>
139#include "IterableFromIterator.inl"
Iterable< T > MakeIterableFromIterator(const Iterator< T > &iterator)
#define qStroika_ATTRIBUTE_NO_UNIQUE_ADDRESS_VCBUGGY
qStroika_ATTRIBUTE_NO_UNIQUE_ADDRESS_VCBUGGY same as qStroika_ATTRIBUTE_NO_UNIQUE_ADDRESS
Implementation detail for iterator implementors.
Iterable<T> is a base class for containers which easily produce an Iterator<T> to traverse them.
nonvirtual CONTAINER_OF_T As(CONTAINER_OF_T_CONSTRUCTOR_ARGS... args) const
T value_type
value_type is an alias for the type iterated over - like vector<T>::value_type
An Iterator<T> is a copyable object which allows traversing the contents of some container....