/* * This file is part of the DXX-Rebirth project . * It is copyright by its individual contributors, as recorded in the * project's Git history. See COPYING.txt at the top level for license * terms and a link to the Git history. */ #pragma once #include #include #include "partial_range.h" template class iterator_result_converter : public iterator_type { public: iterator_result_converter(iterator_type &&iter) : iterator_type(std::move(iter)) { } iterator_type base() const { return *this; } result_type operator*() const { return this->iterator_type::operator*(); } iterator_result_converter &operator++() { return static_cast(this->iterator_type::operator++()); } }; template ()))>> static inline partial_range_t cast_range_result(range_type &range) { return range; }