8 #ifndef OPENFPM_DATA_SRC_UTIL_COPY_COMPARE_AGGREGATES_HPP_
9 #define OPENFPM_DATA_SRC_UTIL_COPY_COMPARE_AGGREGATES_HPP_
11 #include <boost/type_traits.hpp>
12 #include <boost/mpl/vector_c.hpp>
16 template<
template<
typename,
typename>
class op,
typename T>
struct meta_copy_op;
25 template<
typename S,
typename S2>
43 typedef typename boost::fusion::result_of::at_c<typename S2::type,T::value>::type copy_type;
46 typedef typename boost::remove_reference<copy_type>::type copy_rtype;
48 meta_copy_d<decltype(
src.template get<T::value>()), copy_rtype>::meta_copy_d_(
src.template get<T::value>(),
dst.template get<T::value>());
53 template<
template<
typename,
typename>
class op,
typename T>
struct meta_copy_op;
79 typedef typename boost::fusion::result_of::at_c<typename S::type,T::value>::type copy_type;
82 typedef typename boost::remove_reference<copy_type>::type copy_rtype;
94 template<
template<
typename,
typename>
class op,
typename S>
112 typedef typename boost::fusion::result_of::at_c<typename S::type,T::value>::type copy_type;
115 typedef typename boost::remove_reference<copy_type>::type copy_rtype;
148 typedef typename boost::fusion::result_of::at_c<typename S::type,T::value>::type compare_type;
151 typedef typename boost::remove_reference<compare_type>::type compare_rtype;