Boost logo

Boost Users :

Subject: Re: [Boost-users] [Boost.Iterator] transform_iterator equivalent for output iterators
From: dariomt (dariomt_at_[hidden])
Date: 2015-07-31 08:40:29

Edward Diener <eldiener <at>> writes:

> On 7/30/2015 7:06 AM, dariomt <at> wrote:
> > Here is my problem: for any given algorithm that writes its output
> > an output iterator, I'd like to apply a transformation *before*
> > to the output iterator.
> >
> > e.g. inside the algorithm the output iterator is dereferenced and
> > incremented to write each result, typically like this:
> >
> > *output++ = ith_result;
> >
> > I'd like to wrap the output iterator with a unary function func such
> > that the effect is equivalent to:
> >
> > *output++ = func( ith_result );
> >
> > I'm looking at the adaptors in Boost.Iterator but I cannot find a
> > suitable one.
> >
> > Am I missing anything?
> > Is there a better approach?
> Can you not use the function_output_iterator to accomplish what you
> to do ?

IIUC the function_output_iterator "fakes" an output iterator with a
function object that gets called for each element written to the

I need to wrap *both* an actual output iterator and a function object,
and I need to apply the function *before* writing to the actual output

Given that the output iterator is written by dereference and assignment,
I think I would need some kind of proxy reference, that when assigned to
applies the function before doing the actual assignment.

That looks ugly, so I'm asking here for a more elegant solution :)

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at