Boost logo

Boost :

From: Fredrik Blomqvist (fredrik_blomqvist_at_[hidden])
Date: 2004-02-03 16:47:48

Neal D. Becker wrote:
> I ran into the following problem. I have an algorithm which looks
> like:
> template<typename in_t, typename out_t>
> void Alg (in_t in, in_t inend, out_t out) {
> for (; in != inend; in++, out++)
> do_something()
> }
> Now if I want to call this algorithm more than once, it would be
> convenient to pass out by ref, so it would be incremented:
> Alg (v.begin(), v.end(), boost::ref (out))
> that is, pass a reference to some kind of output iterator
> this fails, because boost::ref doesn't have operator++ defined for
> reference_wrapper.
> My question is, should boost::ref forward operators like ++ so that
> this would work?
Altough I kindof see your point, I still feel your key problem is that your
algorithm "should" return the used iterator? (Ala functional/STL style).

template<typename in_t, typename out_t>
out_t Alg (in_t in, in_t inend, out_t out) {
   for (; in != inend; in++, out++)
   return out;

// Fredrik Blomqvist

Boost list run by bdawes at, gregod at, cpdaniel at, john at