#include #include #include #include #include #include #include #include #include #include using namespace boost::mpl; template struct my_op { typedef typename times< typename PAIR::first, boost::mpl::long_<10> >::type NUMBER10; typedef pair< NUMBER10, typename push_back< typename PAIR::second, NUMBER10 >::type > type; }; typedef accumulate< range_c, pair, vector<> >, my_op<_1, _2> >::type POWER10; struct print { template void operator()(const long_ &) const { std::cout << I << std::endl; } template void operator()(const integral_c &) const { std::cout << I << std::endl; } }; int main(int argc, char **argv) { for_each(print()); return 0; }