#pragma once #include "backend/List.h" #include template class List; template class ListIterator { public: ListIterator(List & list, size_t index); public: T operator * () const; ListIterator & operator ++ (); bool operator != (const ListIterator &) const; private: List & list; size_t index; }; template class ListRange { public: ListRange(List & list); public: ListIterator begin() const; ListIterator end() const; size_t size() const; private: List & list; }; #include "ListIterator.hpp"