//See what iter_fold_if does. #include #include #include #include #include #include #include #include namespace boost { namespace mpl { struct print_unsigned { template void operator()(r_iter >&) const { std::cout <<" r_iter:"<< Value << std::endl; } template void operator()(integral_c&) const { std::cout <<" value:"<< Value << std::endl; } }; template < unsigned N > void test_iter_fold_if(void) { typedef range_c numbers; std::cout<<"***test_iter_fold_if<"< numbers=:\n"; for_each(print_unsigned()); typedef typename iter_fold_if < numbers , list<> , push_front,arg<2> > , always , push_front,arg<2> > , always >::type result; std::cout<<"***test_iter_fold_if<"< result::state=:\n"; for_each(print_unsigned()); } }}//exit boost::mpl namespace int main(void) { boost::mpl::test_iter_fold_if<1>(); boost::mpl::test_iter_fold_if<2>(); return 0; }