/*
* 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;
}