#include <boost/phoenix/statement/for.hpp>
Синтаксис это:
for_(init_statement, conditional_expression, step_statement)
[
sequenced_statements
]
Это очень похоже на C++ для утверждения. Обратите внимание, что init_statement, conditional_expression и step_statement разделены запятой вместо полуколона и каждый должен присутствовать (т.е.<for_(,,)
>является недействительным). Это тот случай, когда актер<nothing
>может быть полезен.
Пример: Этот код печатает каждый элемент N раз, когда N является значением элемента. Новая линия завершает распечатку каждого значения.
int iii;
std::for_each(c.begin(), c.end(),
(
for_(ref(iii) = 0, ref(iii) < arg1, ++ref(iii))
[
cout << arg1 << ", "
],
cout << val("\n")
)
);
Как и прежде, все они лениво оцениваются. Результатом таких утверждений являются выражения, которые передаются в STL для каждой функции. С точки зрения<for_each
>, то, что было пройдено, является просто функтором, не больше, не меньше.