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>
16template<
template<
typename,
typename>
class op,
typename T>
struct meta_copy_op;
18template<
typename Tsrc,
typename Tdst>
struct meta_copy_d;
25template<
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>());
53template<
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;
94template<
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;
Structure to compare aggregates.
bool result()
Returh the result of the comparison.
compare_aggregate(const S &src, const S &dst)
copy_aggregate
const S & dst
Destination grid.
void operator()(T &t)
It call the copy function for each member.
bool eq
result of the comparation
Structure to copy aggregates.
void operator()(T &t) const
It call the copy function for each member.
S2 & dst
Destination grid.
copy_aggregate_dual(S src, S2 &dst)
copy_aggregate
Structure to copy aggregates applying an operation.
void operator()(T &t) const
It call the copy function for each member.
copy_aggregate_op(const S &src, S &dst)
copy_aggregate
Structure to copy aggregates.
copy_aggregate(const S &src, S &dst)
copy_aggregate
void operator()(T &t) const
It call the copy function for each member.