#include #ifndef RECURSIVE #include "product_view.h" #else #include "recursive_product_view.h" #endif #include #include #include #include #include #include #include #include #include using namespace boost::mpl; #define ITEM(_1,n,_3) list_c< int, BOOST_PP_MUL(n,2), BOOST_PP_INC(BOOST_PP_MUL(n,2)) > typedef list< BOOST_PP_ENUM(COUNT,ITEM,) > ALot; struct print { template void operator()( integral_c ) { std::cout << N << ' '; } template void operator()( L ) { std::cout << "[ "; for_each( print() ); std::cout << "] "; } }; int main() { std::cout << "Source list:\n"; print()( ALot() ); std::cout << "\nPermutations:\n"; print()( product_view() ); std::cout << std::endl; return 0; }