Boost logo

Boost :

Subject: [boost] [mpl]iter_fold_if Forward Backward rationale?
From: Larry Evans (cppljevans_at_[hidden])
Date: 2009-03-09 13:00:41

Why is there both a ForwardOp and BackwardOp template argument to

I would have thought that only 1 was needed.

Since iter_fold_if is not documented here:

I assume it's not meant to be used by the user, but is only an
implementation detail; however, it, or a variation, might be useful to
implement the and_seq mentioned here:

As shown in that post, the template, while_if_then was used, and it
does not require anything like both a ForwardOp and BackwardOp, it
just requires the If and Then unary metafunctions. One problem I
encountered with while_if_then was moving to the end of the sequence,
at which time the Then metafunction couldn't be called; hence, I had
to make it lazy to avoid dereferencing the end iterator. Is that
somehow related to the need for BackwardOp in iter_fold_if. IOW,
because iter_fold_if might reach the end iterator, it has to backup?

I'm really asking because in the variadic template version of mpl, I
wondering if iter_fold_if could be replaced with something like
while_if_then (which may be renamed fold_if to be more consistent with
other names with similar function).

Any insight about the rationale for the iter_fold_if would probably
save me considerable time in deciding whether it can be replaced with
the proposed fold_if.


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