14 #ifndef _ENTITY_ALGORITHM_SIMD_DETAIL_INVOKE_H_INCLUDED_
15 #define _ENTITY_ALGORITHM_SIMD_DETAIL_INVOKE_H_INCLUDED_
17 #include <boost/fusion/sequence/intrinsic/at.hpp>
19 #include "entity/config.hpp"
23 namespace entity {
namespace simd {
namespace detail
25 template<
typename Source,
typename Target>
31 template<
typename Fn,
template<
typename>
class Sequence,
typename intrinsic_type>
32 void invoke(Fn f, Sequence<intrinsic_type&>& values)
34 using boost::fusion::at_c;
38 template<
typename Fn,
template<
typename,
typename>
class Sequence,
typename intrinsic_type>
39 void invoke(Fn f, Sequence<intrinsic_type&, intrinsic_type&>& values)
41 using boost::fusion::at_c;
42 f(at_c<0>(values), at_c<1>(values));
45 template<
typename Fn,
template<
typename,
typename,
typename>
class Sequence,
typename intrinsic_type>
46 void invoke(Fn f, Sequence<intrinsic_type&, intrinsic_type&, intrinsic_type&>& values)
48 using boost::fusion::at_c;
49 f(at_c<0>(values), at_c<1>(values), at_c<2>(values));
52 template<
typename Fn,
template<
typename,
typename,
typename,
typename>
class Sequence,
typename intrinsic_type>
53 void invoke(Fn f, Sequence<intrinsic_type&, intrinsic_type&, intrinsic_type&, intrinsic_type&>& values)
55 using boost::fusion::at_c;
56 f(at_c<0>(values), at_c<1>(values), at_c<2>(values), at_c<3>(values));
60 #endif // _ENTITY_ALGORITHM_SIMD_DETAIL_INVOKE_H_INCLUDED_
void invoke(Fn f, Sequence< intrinsic_type & > &values)