4#ifndef _Stroika_Foundation_Traversal_DelegatedIterator_h_
5#define _Stroika_Foundation_Traversal_DelegatedIterator_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
9#include "Stroika/Foundation/Common/Common.h"
19namespace Stroika::Foundation::Traversal {
24 template <
typename T,
typename EXTRA_DATA = Common::Empty>
31 Rep (
const Iterator<T>& delegateTo,
const EXTRA_DATA& extraData = EXTRA_DATA{});
32 virtual unique_ptr<IRep> Clone ()
const override;
33 virtual bool AtEnd ()
const override;
34 virtual optional<T> Current ()
const override;
35 virtual optional<T> More ()
override;
36 virtual bool Equals (
const IRep* rhs)
const override;
48#include "DelegatedIterator.inl"
#define qStroika_ATTRIBUTE_NO_UNIQUE_ADDRESS_VCFORCE
[[msvc::no_unique_address]] isn't always broken in MSVC. Annotate with this on things where its not b...
Implementation detail for iterator implementors.
An Iterator<T> is a copyable object which allows traversing the contents of some container.