26 #ifndef MLN_SET_DIFF_HH
27 # define MLN_SET_DIFF_HH
39 # include <mln/core/site_set/p_set.hh>
40 # include <mln/convert/from_to.hh>
41 # include <mln/util/ord.hh>
55 template <
typename Sl,
typename Sr>
57 diff(
const Site_Set<Sl>& lhs,
const Site_Set<Sr>& rhs);
61 # ifndef MLN_INCLUDE_ONLY
63 template <
typename Sl,
typename Sr>
68 trace::entering(
"set::diff");
70 typedef mln_site(Sl) P;
71 mlc_converts_to(mln_psite(Sr), P)::check();
72 std::set< P, util::ord<P> > sl, sr, sd;
73 convert::from_to(lhs, sl);
74 convert::from_to(rhs, sr);
75 std::set_difference(sl.begin(), sl.end(),
77 std::inserter(sd, sd.begin()),
80 convert::from_to(sd, s);
82 trace::exiting(
"set::diff");
86 # endif // ! MLN_INCLUDE_ONLY
93 #endif // ! MLN_SET_DIFF_HH