8 #ifndef SRC_PACKER_UNPACKER_HAS_PACK_AGG_HPP_
9 #define SRC_PACKER_UNPACKER_HAS_PACK_AGG_HPP_
11 #include "prp_all_zero.hpp"
12 #include "Vector/vect_isel.hpp"
13 #include "Vector/util.hpp"
23 #include <boost/fusion/mpl.hpp>
28 template<
class T,
size_t N ,
typename result_p ,
class vprp>
31 typedef typename boost::mpl::at<vprp,
typename boost::mpl::int_<N-1>>::type vprp_N;
32 typedef typename boost::mpl::at<typename T::type,vprp_N>::type stype;
38 typedef typename boost::mpl::bool_< crh_cond::value | result_p::value> result_n;
43 template<
class T,
typename result_p,
class vprp>
46 typedef boost::mpl::bool_<result_p::value> result;
53 template<
class T,
size_t N ,
typename result_p ,
class vprp>
56 typedef typename boost::mpl::at<vprp,
typename boost::mpl::int_<N-1>>::type vprp_N;
57 typedef typename boost::mpl::at<typename T::type,vprp_N>::type stype;
58 typedef typename boost::mpl::bool_<has_pack<stype>::value | result_p::value> result_n;
63 template<
class T,
typename result_p,
class vprp>
66 typedef boost::mpl::bool_<result_p::value> result;
70 template<
typename T,
int np>
90 template<
class T,
int ... prp>
93 typedef typename prp_all_zero<T,
sizeof...(prp) == 0,prp...>::type vprp;
100 template<
class T,
int ... prp>
103 typedef typename prp_all_zero<T,
sizeof...(prp) == 0,prp...>::type vprp;
110 template<class T, unsigned int sel = openfpm::vect_isel<T>::value == OPENFPM_NATIVE>