#include #include #include #include #include #include using namespace std; using namespace boost; struct print_and_return { typedef int result_type; int operator()(int i) const { if ( (*i_)++ != i ) cout << " out of order" << endl; return i; } print_and_return(int i) : i_( new int(i) ) { } shared_ptr i_; }; int main(int argc, char *argv[]) { typedef fusion::vector fusion_vector_t; typedef fusion::transform_view transform_vector_view_t; fusion_vector_t arg_fvec(0,1); cout << "* vector construct" << endl; fusion_vector_t fvec(transform_vector_view_t(arg_fvec, print_and_return(0))); cout << "* vector assign" << endl; fvec = transform_vector_view_t(arg_fvec, print_and_return(0)); typedef fusion::list fusion_list_t; typedef fusion::transform_view transform_list_view_t; fusion_list_t arg_flist(0,1); cout << "* list construct" << endl; fusion_list_t flist(transform_list_view_t(arg_flist, print_and_return(0))); cout << "* list assign" << endl; flist = transform_list_view_t(arg_flist, print_and_return(0)); }