/*=============================================================================
    Copyright (c) 2008 Dan Marsden
  
    Use modification and distribution are subject to the Boost Software 
    License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
    http://www.boost.org/LICENSE_1_0.txt).
==============================================================================*/

#include <boost/fusion/include/vector.hpp>
#include <boost/fusion/include/intrinsic.hpp>

namespace fusion = boost::fusion;

namespace
{
  template<int n, int batch>
  struct distinct
  {};

  template<int batch>
  void test()
  {
    typedef fusion::vector<
      distinct<0, batch>, distinct<1, batch>, distinct<2, batch>, distinct<3, batch>, distinct<4, batch>,
      distinct<5, batch>, distinct<6, batch>, distinct<7, batch>, distinct<8, batch>, distinct<9, batch> > v_type;

    v_type v;

    fusion::at_c<0>(v);
    fusion::at_c<1>(v);
    fusion::at_c<2>(v);
    fusion::at_c<3>(v);
    fusion::at_c<4>(v);

    fusion::at_c<5>(v);
    fusion::at_c<6>(v);
    fusion::at_c<7>(v);
    fusion::at_c<8>(v);
    fusion::at_c<9>(v);

    typedef typename fusion::result_of::value_at_c<v_type, 0>::type va0;
    typedef typename fusion::result_of::value_at_c<v_type, 1>::type va1;
    typedef typename fusion::result_of::value_at_c<v_type, 2>::type va2;
    typedef typename fusion::result_of::value_at_c<v_type, 3>::type va3;
    typedef typename fusion::result_of::value_at_c<v_type, 4>::type va4;

    typedef typename fusion::result_of::value_at_c<v_type, 5>::type va5;
    typedef typename fusion::result_of::value_at_c<v_type, 6>::type va6;
    typedef typename fusion::result_of::value_at_c<v_type, 7>::type va7;
    typedef typename fusion::result_of::value_at_c<v_type, 8>::type va8;
    typedef typename fusion::result_of::value_at_c<v_type, 9>::type va9;

    fusion::begin(v);
    fusion::end(v);
    fusion::size(v);
  }
}

#include "./driver.hpp"
