Ticket #2823: test.cpp

File test.cpp, 1.3 KB (added by dkomisar@…, 14 years ago)
Line 
1#include <iostream>
2
3#include <boost/fusion/include/vector.hpp>
4#include <boost/fusion/include/list.hpp>
5#include <boost/fusion/include/transform_view.hpp>
6
7#include <boost/shared_ptr.hpp>
8#include <boost/utility/result_of.hpp>
9
10using namespace std;
11using namespace boost;
12
13struct print_and_return
14{
15 typedef int result_type;
16
17 int operator()(int i) const {
18 if ( (*i_)++ != i )
19 cout << " out of order" << endl;
20 return i;
21 }
22
23 print_and_return(int i) : i_( new int(i) ) { }
24 shared_ptr<int> i_;
25};
26
27int main(int argc, char *argv[])
28{
29 typedef fusion::vector<int,int> fusion_vector_t;
30 typedef fusion::transform_view<fusion_vector_t, print_and_return> transform_vector_view_t;
31
32 fusion_vector_t arg_fvec(0,1);
33
34 cout << "* vector construct" << endl;
35 fusion_vector_t fvec(transform_vector_view_t(arg_fvec, print_and_return(0)));
36
37 cout << "* vector assign" << endl;
38 fvec = transform_vector_view_t(arg_fvec, print_and_return(0));
39
40 typedef fusion::list<int,int> fusion_list_t;
41 typedef fusion::transform_view<fusion_list_t, print_and_return> transform_list_view_t;
42
43 fusion_list_t arg_flist(0,1);
44
45 cout << "* list construct" << endl;
46 fusion_list_t flist(transform_list_view_t(arg_flist, print_and_return(0)));
47
48 cout << "* list assign" << endl;
49 flist = transform_list_view_t(arg_flist, print_and_return(0));
50}