• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*=============================================================================
2     Copyright (c) 2008 Dan Marsden
3 
4     Use modification and distribution are subject to the Boost Software
5     License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
6     http://www.boost.org/LICENSE_1_0.txt).
7 ==============================================================================*/
8 
9 #include <boost/fusion/include/vector.hpp>
10 #include <boost/fusion/include/intrinsic.hpp>
11 
12 namespace fusion = boost::fusion;
13 
14 namespace
15 {
16   template<int n, int batch>
17   struct distinct
18   {};
19 
20   template<int batch>
test()21   void test()
22   {
23     typedef fusion::vector<
24       distinct<0, batch>, distinct<1, batch>, distinct<2, batch>, distinct<3, batch>, distinct<4, batch>,
25       distinct<5, batch>, distinct<6, batch>, distinct<7, batch>, distinct<8, batch>, distinct<9, batch> > v_type;
26 
27     v_type v;
28 
29     fusion::at_c<0>(v);
30     fusion::at_c<1>(v);
31     fusion::at_c<2>(v);
32     fusion::at_c<3>(v);
33     fusion::at_c<4>(v);
34 
35     fusion::at_c<5>(v);
36     fusion::at_c<6>(v);
37     fusion::at_c<7>(v);
38     fusion::at_c<8>(v);
39     fusion::at_c<9>(v);
40 
41     typedef typename boost::fusion::result_of::value_at_c<v_type, 0>::type va0;
42     typedef typename boost::fusion::result_of::value_at_c<v_type, 1>::type va1;
43     typedef typename boost::fusion::result_of::value_at_c<v_type, 2>::type va2;
44     typedef typename boost::fusion::result_of::value_at_c<v_type, 3>::type va3;
45     typedef typename boost::fusion::result_of::value_at_c<v_type, 4>::type va4;
46 
47     typedef typename boost::fusion::result_of::value_at_c<v_type, 5>::type va5;
48     typedef typename boost::fusion::result_of::value_at_c<v_type, 6>::type va6;
49     typedef typename boost::fusion::result_of::value_at_c<v_type, 7>::type va7;
50     typedef typename boost::fusion::result_of::value_at_c<v_type, 8>::type va8;
51     typedef typename boost::fusion::result_of::value_at_c<v_type, 9>::type va9;
52 
53     fusion::begin(v);
54     fusion::end(v);
55     fusion::size(v);
56   }
57 }
58 
59 #include "./driver.hpp"
60