Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of Boost. Click here to view this page for the latest version.
PrevUpHomeNext

for_ Statement

#include <boost/phoenix/statement/for.hpp>

The syntax is:

for_(init_statement, conditional_expression, step_statement)
[
    sequenced_statements
]

It is again very similar to the C++ for statement. Take note that the init_statement, conditional_expression and step_statement are separated by the comma instead of the semi-colon and each must be present (i.e. for_(,,) is invalid). This is a case where the nothing actor can be useful.

Example: This code prints each element N times where N is the element's value. A newline terminates the printout of each value.

int iii;
std::for_each(c.begin(), c.end(),
    (
        for_(ref(iii) = 0, ref(iii) < arg1, ++ref(iii))
        [
            cout << arg1 << ", "
        ],
        cout << val("\n")
    )
);

As before, all these are lazily evaluated. The result of such statements are in fact expressions that are passed on to STL's for_each function. In the viewpoint of for_each, what was passed is just a functor, no more, no less.


PrevUpHomeNext