Edward Diener
On 7/30/2015 7:06 AM, dariomt <at> gmail.com wrote:
Here is my problem: for any given algorithm that writes its output
into
an output iterator, I'd like to apply a transformation *before* writing 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 want to do ?
IIUC the function_output_iterator "fakes" an output iterator with a function object that gets called for each element written to the iterator. 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 iterator. 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 :)