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"
22 #include <boost/fusion/mpl.hpp>
31 template<
class T,
size_t N ,
typename result_p ,
class vprp>
34 typedef typename boost::mpl::at<vprp,
typename boost::mpl::int_<N-1>>::type vprp_N;
35 typedef typename boost::mpl::at<typename T::type,vprp_N>::type stype;
36 typedef typename boost::mpl::bool_<has_pack<stype>::value | result_p::value> result_n;
41 template<
class T,
typename result_p,
class vprp>
44 typedef boost::mpl::bool_<result_p::value> result;
48 template<
typename T,
int np>
68 template<
class T,
int ... prp>
71 typedef typename prp_all_zero<T,
sizeof...(prp) == 0,prp...>::type vprp;
78 template<class T, unsigned int sel = openfpm::vect_isel<T>::value == OPENFPM_NATIVE>
has_pack_agg_impl< T, number_prop< T, sizeof...(prp)>::value, boost::mpl::bool_< false >, vprp >::result result
typedef typename to_boost_vmpl<prp...>::type vprp;
has_Pack check if a type has defined a method called Pack
These set of classes generate an array definition at compile-time.
return if true the aggregate type T has a property that has a complex packing(serialization) method ...
It return true if the object T require complex serialization.
Structure to convert a variadic template into boost::mpl::vector.