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