#include #include "product_view.h" #include #include #include using namespace boost::mpl; typedef list< list_c< int, 1 >, list_c< int, 2, 3 >, list_c< int, 4, 5, 6 > > Six; typedef push_front< Six, list<> >::type None; void print1( int c ) { std::cout << c << ' '; } struct print { template void operator()( L ) { std::cout << "[ "; for_each( print1 ); std::cout << "]" << std::endl; } }; int main() { std::cout << "Source lists (1)\n"; for_each( print() ); std::cout << "Permutations\n"; for_each< product_view >( print() ); std::cout << "Source lists (2)\n"; for_each( print() ); std::cout << "Permutations\n"; for_each< product_view >( print() ); return 0; }