namespace boost {
namespace fusion {
struct void_;
namespace result_of {
template <typename T0 = void_, typename T1 = void_, typename T2 = void_,
          typename T3 = void_, typename T4 = void_, typename T5 = void_,
          typename T6 = void_, typename T7 = void_, typename T8 = void_,
          typename T9 = void_, typename Extra = void_>
struct make_vector;
template <> struct make_vector<> { typedef vector0<> type; };
} 
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline vector0<> make_vector() {
  return vector0<>();
}
namespace result_of {
template <typename T0>
struct make_vector<T0, void_, void_, void_, void_, void_, void_, void_, void_,
                   void_, void_> {
  typedef vector1<typename detail::as_fusion_element<T0>::type> type;
};
} 
template <typename T0>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline vector1<
    typename detail::as_fusion_element<T0>::type>
make_vector(T0 const &arg0) {
  return vector1<typename detail::as_fusion_element<T0>::type>(arg0);
}
namespace result_of {
template <typename T0, typename T1>
struct make_vector<T0, T1, void_, void_, void_, void_, void_, void_, void_,
                   void_, void_> {
  typedef vector2<typename detail::as_fusion_element<T0>::type,
                  typename detail::as_fusion_element<T1>::type>
      type;
};
} 
template <typename T0, typename T1>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline vector2<
    typename detail::as_fusion_element<T0>::type,
    typename detail::as_fusion_element<T1>::type>
make_vector(T0 const &arg0, T1 const &arg1) {
  return vector2<typename detail::as_fusion_element<T0>::type,
                 typename detail::as_fusion_element<T1>::type>(arg0, arg1);
}
namespace result_of {
template <typename T0, typename T1, typename T2>
struct make_vector<T0, T1, T2, void_, void_, void_, void_, void_, void_, void_,
                   void_> {
  typedef vector3<typename detail::as_fusion_element<T0>::type,
                  typename detail::as_fusion_element<T1>::type,
                  typename detail::as_fusion_element<T2>::type>
      type;
};
} 
template <typename T0, typename T1, typename T2>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline vector3<
    typename detail::as_fusion_element<T0>::type,
    typename detail::as_fusion_element<T1>::type,
    typename detail::as_fusion_element<T2>::type>
make_vector(T0 const &arg0, T1 const &arg1, T2 const &arg2) {
  return vector3<typename detail::as_fusion_element<T0>::type,
                 typename detail::as_fusion_element<T1>::type,
                 typename detail::as_fusion_element<T2>::type>(arg0, arg1,
                                                               arg2);
}
namespace result_of {
template <typename T0, typename T1, typename T2, typename T3>
struct make_vector<T0, T1, T2, T3, void_, void_, void_, void_, void_, void_,
                   void_> {
  typedef vector4<typename detail::as_fusion_element<T0>::type,
                  typename detail::as_fusion_element<T1>::type,
                  typename detail::as_fusion_element<T2>::type,
                  typename detail::as_fusion_element<T3>::type>
      type;
};
} 
template <typename T0, typename T1, typename T2, typename T3>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline vector4<
    typename detail::as_fusion_element<T0>::type,
    typename detail::as_fusion_element<T1>::type,
    typename detail::as_fusion_element<T2>::type,
    typename detail::as_fusion_element<T3>::type>
make_vector(T0 const &arg0, T1 const &arg1, T2 const &arg2, T3 const &arg3) {
  return vector4<typename detail::as_fusion_element<T0>::type,
                 typename detail::as_fusion_element<T1>::type,
                 typename detail::as_fusion_element<T2>::type,
                 typename detail::as_fusion_element<T3>::type>(arg0, arg1, arg2,
                                                               arg3);
}
namespace result_of {
template <typename T0, typename T1, typename T2, typename T3, typename T4>
struct make_vector<T0, T1, T2, T3, T4, void_, void_, void_, void_, void_,
                   void_> {
  typedef vector5<typename detail::as_fusion_element<T0>::type,
                  typename detail::as_fusion_element<T1>::type,
                  typename detail::as_fusion_element<T2>::type,
                  typename detail::as_fusion_element<T3>::type,
                  typename detail::as_fusion_element<T4>::type>
      type;
};
} 
template <typename T0, typename T1, typename T2, typename T3, typename T4>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline vector5<
    typename detail::as_fusion_element<T0>::type,
    typename detail::as_fusion_element<T1>::type,
    typename detail::as_fusion_element<T2>::type,
    typename detail::as_fusion_element<T3>::type,
    typename detail::as_fusion_element<T4>::type>
make_vector(T0 const &arg0, T1 const &arg1, T2 const &arg2, T3 const &arg3,
            T4 const &arg4) {
  return vector5<typename detail::as_fusion_element<T0>::type,
                 typename detail::as_fusion_element<T1>::type,
                 typename detail::as_fusion_element<T2>::type,
                 typename detail::as_fusion_element<T3>::type,
                 typename detail::as_fusion_element<T4>::type>(arg0, arg1, arg2,
                                                               arg3, arg4);
}
namespace result_of {
template <typename T0, typename T1, typename T2, typename T3, typename T4,
          typename T5>
struct make_vector<T0, T1, T2, T3, T4, T5, void_, void_, void_, void_, void_> {
  typedef vector6<typename detail::as_fusion_element<T0>::type,
                  typename detail::as_fusion_element<T1>::type,
                  typename detail::as_fusion_element<T2>::type,
                  typename detail::as_fusion_element<T3>::type,
                  typename detail::as_fusion_element<T4>::type,
                  typename detail::as_fusion_element<T5>::type>
      type;
};
} 
template <typename T0, typename T1, typename T2, typename T3, typename T4,
          typename T5>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline vector6<
    typename detail::as_fusion_element<T0>::type,
    typename detail::as_fusion_element<T1>::type,
    typename detail::as_fusion_element<T2>::type,
    typename detail::as_fusion_element<T3>::type,
    typename detail::as_fusion_element<T4>::type,
    typename detail::as_fusion_element<T5>::type>
make_vector(T0 const &arg0, T1 const &arg1, T2 const &arg2, T3 const &arg3,
            T4 const &arg4, T5 const &arg5) {
  return vector6<typename detail::as_fusion_element<T0>::type,
                 typename detail::as_fusion_element<T1>::type,
                 typename detail::as_fusion_element<T2>::type,
                 typename detail::as_fusion_element<T3>::type,
                 typename detail::as_fusion_element<T4>::type,
                 typename detail::as_fusion_element<T5>::type>(
      arg0, arg1, arg2, arg3, arg4, arg5);
}
namespace result_of {
template <typename T0, typename T1, typename T2, typename T3, typename T4,
          typename T5, typename T6>
struct make_vector<T0, T1, T2, T3, T4, T5, T6, void_, void_, void_, void_> {
  typedef vector7<typename detail::as_fusion_element<T0>::type,
                  typename detail::as_fusion_element<T1>::type,
                  typename detail::as_fusion_element<T2>::type,
                  typename detail::as_fusion_element<T3>::type,
                  typename detail::as_fusion_element<T4>::type,
                  typename detail::as_fusion_element<T5>::type,
                  typename detail::as_fusion_element<T6>::type>
      type;
};
} 
template <typename T0, typename T1, typename T2, typename T3, typename T4,
          typename T5, typename T6>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline vector7<
    typename detail::as_fusion_element<T0>::type,
    typename detail::as_fusion_element<T1>::type,
    typename detail::as_fusion_element<T2>::type,
    typename detail::as_fusion_element<T3>::type,
    typename detail::as_fusion_element<T4>::type,
    typename detail::as_fusion_element<T5>::type,
    typename detail::as_fusion_element<T6>::type>
make_vector(T0 const &arg0, T1 const &arg1, T2 const &arg2, T3 const &arg3,
            T4 const &arg4, T5 const &arg5, T6 const &arg6) {
  return vector7<typename detail::as_fusion_element<T0>::type,
                 typename detail::as_fusion_element<T1>::type,
                 typename detail::as_fusion_element<T2>::type,
                 typename detail::as_fusion_element<T3>::type,
                 typename detail::as_fusion_element<T4>::type,
                 typename detail::as_fusion_element<T5>::type,
                 typename detail::as_fusion_element<T6>::type>(
      arg0, arg1, arg2, arg3, arg4, arg5, arg6);
}
namespace result_of {
template <typename T0, typename T1, typename T2, typename T3, typename T4,
          typename T5, typename T6, typename T7>
struct make_vector<T0, T1, T2, T3, T4, T5, T6, T7, void_, void_, void_> {
  typedef vector8<typename detail::as_fusion_element<T0>::type,
                  typename detail::as_fusion_element<T1>::type,
                  typename detail::as_fusion_element<T2>::type,
                  typename detail::as_fusion_element<T3>::type,
                  typename detail::as_fusion_element<T4>::type,
                  typename detail::as_fusion_element<T5>::type,
                  typename detail::as_fusion_element<T6>::type,
                  typename detail::as_fusion_element<T7>::type>
      type;
};
} 
template <typename T0, typename T1, typename T2, typename T3, typename T4,
          typename T5, typename T6, typename T7>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline vector8<
    typename detail::as_fusion_element<T0>::type,
    typename detail::as_fusion_element<T1>::type,
    typename detail::as_fusion_element<T2>::type,
    typename detail::as_fusion_element<T3>::type,
    typename detail::as_fusion_element<T4>::type,
    typename detail::as_fusion_element<T5>::type,
    typename detail::as_fusion_element<T6>::type,
    typename detail::as_fusion_element<T7>::type>
make_vector(T0 const &arg0, T1 const &arg1, T2 const &arg2, T3 const &arg3,
            T4 const &arg4, T5 const &arg5, T6 const &arg6, T7 const &arg7) {
  return vector8<typename detail::as_fusion_element<T0>::type,
                 typename detail::as_fusion_element<T1>::type,
                 typename detail::as_fusion_element<T2>::type,
                 typename detail::as_fusion_element<T3>::type,
                 typename detail::as_fusion_element<T4>::type,
                 typename detail::as_fusion_element<T5>::type,
                 typename detail::as_fusion_element<T6>::type,
                 typename detail::as_fusion_element<T7>::type>(
      arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
}
namespace result_of {
template <typename T0, typename T1, typename T2, typename T3, typename T4,
          typename T5, typename T6, typename T7, typename T8>
struct make_vector<T0, T1, T2, T3, T4, T5, T6, T7, T8, void_, void_> {
  typedef vector9<typename detail::as_fusion_element<T0>::type,
                  typename detail::as_fusion_element<T1>::type,
                  typename detail::as_fusion_element<T2>::type,
                  typename detail::as_fusion_element<T3>::type,
                  typename detail::as_fusion_element<T4>::type,
                  typename detail::as_fusion_element<T5>::type,
                  typename detail::as_fusion_element<T6>::type,
                  typename detail::as_fusion_element<T7>::type,
                  typename detail::as_fusion_element<T8>::type>
      type;
};
} 
template <typename T0, typename T1, typename T2, typename T3, typename T4,
          typename T5, typename T6, typename T7, typename T8>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline vector9<
    typename detail::as_fusion_element<T0>::type,
    typename detail::as_fusion_element<T1>::type,
    typename detail::as_fusion_element<T2>::type,
    typename detail::as_fusion_element<T3>::type,
    typename detail::as_fusion_element<T4>::type,
    typename detail::as_fusion_element<T5>::type,
    typename detail::as_fusion_element<T6>::type,
    typename detail::as_fusion_element<T7>::type,
    typename detail::as_fusion_element<T8>::type>
make_vector(T0 const &arg0, T1 const &arg1, T2 const &arg2, T3 const &arg3,
            T4 const &arg4, T5 const &arg5, T6 const &arg6, T7 const &arg7,
            T8 const &arg8) {
  return vector9<typename detail::as_fusion_element<T0>::type,
                 typename detail::as_fusion_element<T1>::type,
                 typename detail::as_fusion_element<T2>::type,
                 typename detail::as_fusion_element<T3>::type,
                 typename detail::as_fusion_element<T4>::type,
                 typename detail::as_fusion_element<T5>::type,
                 typename detail::as_fusion_element<T6>::type,
                 typename detail::as_fusion_element<T7>::type,
                 typename detail::as_fusion_element<T8>::type>(
      arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
}
namespace result_of {
template <typename T0, typename T1, typename T2, typename T3, typename T4,
          typename T5, typename T6, typename T7, typename T8, typename T9>
struct make_vector<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, void_> {
  typedef vector10<typename detail::as_fusion_element<T0>::type,
                   typename detail::as_fusion_element<T1>::type,
                   typename detail::as_fusion_element<T2>::type,
                   typename detail::as_fusion_element<T3>::type,
                   typename detail::as_fusion_element<T4>::type,
                   typename detail::as_fusion_element<T5>::type,
                   typename detail::as_fusion_element<T6>::type,
                   typename detail::as_fusion_element<T7>::type,
                   typename detail::as_fusion_element<T8>::type,
                   typename detail::as_fusion_element<T9>::type>
      type;
};
} 
template <typename T0, typename T1, typename T2, typename T3, typename T4,
          typename T5, typename T6, typename T7, typename T8, typename T9>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline vector10<
    typename detail::as_fusion_element<T0>::type,
    typename detail::as_fusion_element<T1>::type,
    typename detail::as_fusion_element<T2>::type,
    typename detail::as_fusion_element<T3>::type,
    typename detail::as_fusion_element<T4>::type,
    typename detail::as_fusion_element<T5>::type,
    typename detail::as_fusion_element<T6>::type,
    typename detail::as_fusion_element<T7>::type,
    typename detail::as_fusion_element<T8>::type,
    typename detail::as_fusion_element<T9>::type>
make_vector(T0 const &arg0, T1 const &arg1, T2 const &arg2, T3 const &arg3,
            T4 const &arg4, T5 const &arg5, T6 const &arg6, T7 const &arg7,
            T8 const &arg8, T9 const &arg9) {
  return vector10<typename detail::as_fusion_element<T0>::type,
                  typename detail::as_fusion_element<T1>::type,
                  typename detail::as_fusion_element<T2>::type,
                  typename detail::as_fusion_element<T3>::type,
                  typename detail::as_fusion_element<T4>::type,
                  typename detail::as_fusion_element<T5>::type,
                  typename detail::as_fusion_element<T6>::type,
                  typename detail::as_fusion_element<T7>::type,
                  typename detail::as_fusion_element<T8>::type,
                  typename detail::as_fusion_element<T9>::type>(
      arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
}
} 
}
/*=============================================================================
    Copyright (c) 2001-2011 Joel de Guzman

    Distributed under 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)

    This is an auto-generated file. Do not edit!
==============================================================================*/
namespace boost {
namespace fusion {
struct void_;
namespace result_of {
template <typename T0 = void_, typename T1 = void_, typename T2 = void_,
          typename T3 = void_, typename T4 = void_, typename T5 = void_,
          typename T6 = void_, typename T7 = void_, typename T8 = void_,
          typename T9 = void_, typename Extra = void_>
struct make_vector;
template <> struct make_vector<> { typedef vector0<> type; };
} // namespace result_of
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline vector0<> make_vector() {
  return vector0<>();
}
namespace result_of {
template <typename T0>
struct make_vector<T0, void_, void_, void_, void_, void_, void_, void_, void_,
                   void_, void_> {
  typedef vector1<typename detail::as_fusion_element<T0>::type> type;
};
} // namespace result_of
template <typename T0>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline vector1<
    typename detail::as_fusion_element<T0>::type>
make_vector(T0 const &arg0) {
  return vector1<typename detail::as_fusion_element<T0>::type>(arg0);
}
namespace result_of {
template <typename T0, typename T1>
struct make_vector<T0, T1, void_, void_, void_, void_, void_, void_, void_,
                   void_, void_> {
  typedef vector2<typename detail::as_fusion_element<T0>::type,
                  typename detail::as_fusion_element<T1>::type>
      type;
};
} // namespace result_of
template <typename T0, typename T1>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline vector2<
    typename detail::as_fusion_element<T0>::type,
    typename detail::as_fusion_element<T1>::type>
make_vector(T0 const &arg0, T1 const &arg1) {
  return vector2<typename detail::as_fusion_element<T0>::type,
                 typename detail::as_fusion_element<T1>::type>(arg0, arg1);
}
namespace result_of {
template <typename T0, typename T1, typename T2>
struct make_vector<T0, T1, T2, void_, void_, void_, void_, void_, void_, void_,
                   void_> {
  typedef vector3<typename detail::as_fusion_element<T0>::type,
                  typename detail::as_fusion_element<T1>::type,
                  typename detail::as_fusion_element<T2>::type>
      type;
};
} // namespace result_of
template <typename T0, typename T1, typename T2>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline vector3<
    typename detail::as_fusion_element<T0>::type,
    typename detail::as_fusion_element<T1>::type,
    typename detail::as_fusion_element<T2>::type>
make_vector(T0 const &arg0, T1 const &arg1, T2 const &arg2) {
  return vector3<typename detail::as_fusion_element<T0>::type,
                 typename detail::as_fusion_element<T1>::type,
                 typename detail::as_fusion_element<T2>::type>(arg0, arg1,
                                                               arg2);
}
namespace result_of {
template <typename T0, typename T1, typename T2, typename T3>
struct make_vector<T0, T1, T2, T3, void_, void_, void_, void_, void_, void_,
                   void_> {
  typedef vector4<typename detail::as_fusion_element<T0>::type,
                  typename detail::as_fusion_element<T1>::type,
                  typename detail::as_fusion_element<T2>::type,
                  typename detail::as_fusion_element<T3>::type>
      type;
};
} // namespace result_of
template <typename T0, typename T1, typename T2, typename T3>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline vector4<
    typename detail::as_fusion_element<T0>::type,
    typename detail::as_fusion_element<T1>::type,
    typename detail::as_fusion_element<T2>::type,
    typename detail::as_fusion_element<T3>::type>
make_vector(T0 const &arg0, T1 const &arg1, T2 const &arg2, T3 const &arg3) {
  return vector4<typename detail::as_fusion_element<T0>::type,
                 typename detail::as_fusion_element<T1>::type,
                 typename detail::as_fusion_element<T2>::type,
                 typename detail::as_fusion_element<T3>::type>(arg0, arg1, arg2,
                                                               arg3);
}
namespace result_of {
template <typename T0, typename T1, typename T2, typename T3, typename T4>
struct make_vector<T0, T1, T2, T3, T4, void_, void_, void_, void_, void_,
                   void_> {
  typedef vector5<typename detail::as_fusion_element<T0>::type,
                  typename detail::as_fusion_element<T1>::type,
                  typename detail::as_fusion_element<T2>::type,
                  typename detail::as_fusion_element<T3>::type,
                  typename detail::as_fusion_element<T4>::type>
      type;
};
} // namespace result_of
template <typename T0, typename T1, typename T2, typename T3, typename T4>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline vector5<
    typename detail::as_fusion_element<T0>::type,
    typename detail::as_fusion_element<T1>::type,
    typename detail::as_fusion_element<T2>::type,
    typename detail::as_fusion_element<T3>::type,
    typename detail::as_fusion_element<T4>::type>
make_vector(T0 const &arg0, T1 const &arg1, T2 const &arg2, T3 const &arg3,
            T4 const &arg4) {
  return vector5<typename detail::as_fusion_element<T0>::type,
                 typename detail::as_fusion_element<T1>::type,
                 typename detail::as_fusion_element<T2>::type,
                 typename detail::as_fusion_element<T3>::type,
                 typename detail::as_fusion_element<T4>::type>(arg0, arg1, arg2,
                                                               arg3, arg4);
}
namespace result_of {
template <typename T0, typename T1, typename T2, typename T3, typename T4,
          typename T5>
struct make_vector<T0, T1, T2, T3, T4, T5, void_, void_, void_, void_, void_> {
  typedef vector6<typename detail::as_fusion_element<T0>::type,
                  typename detail::as_fusion_element<T1>::type,
                  typename detail::as_fusion_element<T2>::type,
                  typename detail::as_fusion_element<T3>::type,
                  typename detail::as_fusion_element<T4>::type,
                  typename detail::as_fusion_element<T5>::type>
      type;
};
} // namespace result_of
template <typename T0, typename T1, typename T2, typename T3, typename T4,
          typename T5>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline vector6<
    typename detail::as_fusion_element<T0>::type,
    typename detail::as_fusion_element<T1>::type,
    typename detail::as_fusion_element<T2>::type,
    typename detail::as_fusion_element<T3>::type,
    typename detail::as_fusion_element<T4>::type,
    typename detail::as_fusion_element<T5>::type>
make_vector(T0 const &arg0, T1 const &arg1, T2 const &arg2, T3 const &arg3,
            T4 const &arg4, T5 const &arg5) {
  return vector6<typename detail::as_fusion_element<T0>::type,
                 typename detail::as_fusion_element<T1>::type,
                 typename detail::as_fusion_element<T2>::type,
                 typename detail::as_fusion_element<T3>::type,
                 typename detail::as_fusion_element<T4>::type,
                 typename detail::as_fusion_element<T5>::type>(
      arg0, arg1, arg2, arg3, arg4, arg5);
}
namespace result_of {
template <typename T0, typename T1, typename T2, typename T3, typename T4,
          typename T5, typename T6>
struct make_vector<T0, T1, T2, T3, T4, T5, T6, void_, void_, void_, void_> {
  typedef vector7<typename detail::as_fusion_element<T0>::type,
                  typename detail::as_fusion_element<T1>::type,
                  typename detail::as_fusion_element<T2>::type,
                  typename detail::as_fusion_element<T3>::type,
                  typename detail::as_fusion_element<T4>::type,
                  typename detail::as_fusion_element<T5>::type,
                  typename detail::as_fusion_element<T6>::type>
      type;
};
} // namespace result_of
template <typename T0, typename T1, typename T2, typename T3, typename T4,
          typename T5, typename T6>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline vector7<
    typename detail::as_fusion_element<T0>::type,
    typename detail::as_fusion_element<T1>::type,
    typename detail::as_fusion_element<T2>::type,
    typename detail::as_fusion_element<T3>::type,
    typename detail::as_fusion_element<T4>::type,
    typename detail::as_fusion_element<T5>::type,
    typename detail::as_fusion_element<T6>::type>
make_vector(T0 const &arg0, T1 const &arg1, T2 const &arg2, T3 const &arg3,
            T4 const &arg4, T5 const &arg5, T6 const &arg6) {
  return vector7<typename detail::as_fusion_element<T0>::type,
                 typename detail::as_fusion_element<T1>::type,
                 typename detail::as_fusion_element<T2>::type,
                 typename detail::as_fusion_element<T3>::type,
                 typename detail::as_fusion_element<T4>::type,
                 typename detail::as_fusion_element<T5>::type,
                 typename detail::as_fusion_element<T6>::type>(
      arg0, arg1, arg2, arg3, arg4, arg5, arg6);
}
namespace result_of {
template <typename T0, typename T1, typename T2, typename T3, typename T4,
          typename T5, typename T6, typename T7>
struct make_vector<T0, T1, T2, T3, T4, T5, T6, T7, void_, void_, void_> {
  typedef vector8<typename detail::as_fusion_element<T0>::type,
                  typename detail::as_fusion_element<T1>::type,
                  typename detail::as_fusion_element<T2>::type,
                  typename detail::as_fusion_element<T3>::type,
                  typename detail::as_fusion_element<T4>::type,
                  typename detail::as_fusion_element<T5>::type,
                  typename detail::as_fusion_element<T6>::type,
                  typename detail::as_fusion_element<T7>::type>
      type;
};
} // namespace result_of
template <typename T0, typename T1, typename T2, typename T3, typename T4,
          typename T5, typename T6, typename T7>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline vector8<
    typename detail::as_fusion_element<T0>::type,
    typename detail::as_fusion_element<T1>::type,
    typename detail::as_fusion_element<T2>::type,
    typename detail::as_fusion_element<T3>::type,
    typename detail::as_fusion_element<T4>::type,
    typename detail::as_fusion_element<T5>::type,
    typename detail::as_fusion_element<T6>::type,
    typename detail::as_fusion_element<T7>::type>
make_vector(T0 const &arg0, T1 const &arg1, T2 const &arg2, T3 const &arg3,
            T4 const &arg4, T5 const &arg5, T6 const &arg6, T7 const &arg7) {
  return vector8<typename detail::as_fusion_element<T0>::type,
                 typename detail::as_fusion_element<T1>::type,
                 typename detail::as_fusion_element<T2>::type,
                 typename detail::as_fusion_element<T3>::type,
                 typename detail::as_fusion_element<T4>::type,
                 typename detail::as_fusion_element<T5>::type,
                 typename detail::as_fusion_element<T6>::type,
                 typename detail::as_fusion_element<T7>::type>(
      arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
}
namespace result_of {
template <typename T0, typename T1, typename T2, typename T3, typename T4,
          typename T5, typename T6, typename T7, typename T8>
struct make_vector<T0, T1, T2, T3, T4, T5, T6, T7, T8, void_, void_> {
  typedef vector9<typename detail::as_fusion_element<T0>::type,
                  typename detail::as_fusion_element<T1>::type,
                  typename detail::as_fusion_element<T2>::type,
                  typename detail::as_fusion_element<T3>::type,
                  typename detail::as_fusion_element<T4>::type,
                  typename detail::as_fusion_element<T5>::type,
                  typename detail::as_fusion_element<T6>::type,
                  typename detail::as_fusion_element<T7>::type,
                  typename detail::as_fusion_element<T8>::type>
      type;
};
} // namespace result_of
template <typename T0, typename T1, typename T2, typename T3, typename T4,
          typename T5, typename T6, typename T7, typename T8>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline vector9<
    typename detail::as_fusion_element<T0>::type,
    typename detail::as_fusion_element<T1>::type,
    typename detail::as_fusion_element<T2>::type,
    typename detail::as_fusion_element<T3>::type,
    typename detail::as_fusion_element<T4>::type,
    typename detail::as_fusion_element<T5>::type,
    typename detail::as_fusion_element<T6>::type,
    typename detail::as_fusion_element<T7>::type,
    typename detail::as_fusion_element<T8>::type>
make_vector(T0 const &arg0, T1 const &arg1, T2 const &arg2, T3 const &arg3,
            T4 const &arg4, T5 const &arg5, T6 const &arg6, T7 const &arg7,
            T8 const &arg8) {
  return vector9<typename detail::as_fusion_element<T0>::type,
                 typename detail::as_fusion_element<T1>::type,
                 typename detail::as_fusion_element<T2>::type,
                 typename detail::as_fusion_element<T3>::type,
                 typename detail::as_fusion_element<T4>::type,
                 typename detail::as_fusion_element<T5>::type,
                 typename detail::as_fusion_element<T6>::type,
                 typename detail::as_fusion_element<T7>::type,
                 typename detail::as_fusion_element<T8>::type>(
      arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
}
namespace result_of {
template <typename T0, typename T1, typename T2, typename T3, typename T4,
          typename T5, typename T6, typename T7, typename T8, typename T9>
struct make_vector<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, void_> {
  typedef vector10<typename detail::as_fusion_element<T0>::type,
                   typename detail::as_fusion_element<T1>::type,
                   typename detail::as_fusion_element<T2>::type,
                   typename detail::as_fusion_element<T3>::type,
                   typename detail::as_fusion_element<T4>::type,
                   typename detail::as_fusion_element<T5>::type,
                   typename detail::as_fusion_element<T6>::type,
                   typename detail::as_fusion_element<T7>::type,
                   typename detail::as_fusion_element<T8>::type,
                   typename detail::as_fusion_element<T9>::type>
      type;
};
} // namespace result_of
template <typename T0, typename T1, typename T2, typename T3, typename T4,
          typename T5, typename T6, typename T7, typename T8, typename T9>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline vector10<
    typename detail::as_fusion_element<T0>::type,
    typename detail::as_fusion_element<T1>::type,
    typename detail::as_fusion_element<T2>::type,
    typename detail::as_fusion_element<T3>::type,
    typename detail::as_fusion_element<T4>::type,
    typename detail::as_fusion_element<T5>::type,
    typename detail::as_fusion_element<T6>::type,
    typename detail::as_fusion_element<T7>::type,
    typename detail::as_fusion_element<T8>::type,
    typename detail::as_fusion_element<T9>::type>
make_vector(T0 const &arg0, T1 const &arg1, T2 const &arg2, T3 const &arg3,
            T4 const &arg4, T5 const &arg5, T6 const &arg6, T7 const &arg7,
            T8 const &arg8, T9 const &arg9) {
  return vector10<typename detail::as_fusion_element<T0>::type,
                  typename detail::as_fusion_element<T1>::type,
                  typename detail::as_fusion_element<T2>::type,
                  typename detail::as_fusion_element<T3>::type,
                  typename detail::as_fusion_element<T4>::type,
                  typename detail::as_fusion_element<T5>::type,
                  typename detail::as_fusion_element<T6>::type,
                  typename detail::as_fusion_element<T7>::type,
                  typename detail::as_fusion_element<T8>::type,
                  typename detail::as_fusion_element<T9>::type>(
      arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
}
} // namespace fusion
} // namespace boost
