// Description: Iterator reporter
#ifndef PASTELSYS_ITERATOR_OUTPUT_H
#define PASTELSYS_ITERATOR_OUTPUT_H
#include "pastel/sys/output/output_concept.h"
namespace Pastel
{
template <typename Iterator>
class Iterator_Output
{
public:
explicit Iterator_Output(Iterator& iter)
: iter_(iter)
{
}
template <typename That>
bool operator()(That&& that) const
{
*iter_ = std::forward<That>(that);
++iter_;
return true;
}
private:
Iterator& iter_;
};
template <typename Iterator>
Iterator_Output<Iterator> iteratorOutput(
Iterator& iter)
{
return Iterator_Output<Iterator>(iter);
}
}
#endif