#pragma once #include "iterators/BaseIterator.h" template struct IteratorForward : public BaseIterator { explicit IteratorForward(T* ptr) : Iterator(first(ptr)) {} static T* first(T* node) { return node; } static T* next(T* node) { return node ? node->get_next() : nullptr; } Iterator& operator++() override { this->current = next(this->current); return *this; } };