#pragma once #include #include namespace jvalidate::adapter::detail { template class JsonArrayIterator : public It { public: using value_type = Adapter; using reference = Adapter; using pointer = ::jvalidate::detail::DerefProxy; using difference_type = std::ptrdiff_t; using iterator_category = std::forward_iterator_tag; JsonArrayIterator() = default; JsonArrayIterator(It it) : It(it) {} reference operator*() const { return {It::operator*()}; } pointer operator->() const { return {operator*()}; } JsonArrayIterator operator++(int) { auto tmp = *this; ++*this; return tmp; } JsonArrayIterator & operator++() { It::operator++(); return *this; } }; }