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