26 #ifndef MLN_ACCU_MINUS_HH
27 # define MLN_ACCU_MINUS_HH
33 # include <mln/core/concept/meta_accumulator.hh>
35 # include <mln/arith/minus.hh>
37 # include <mln/accu/internal/base.hh>
38 # include <mln/metal/is_a.hh>
39 # include <mln/metal/unqualif.hh>
58 template <
typename A1,
typename A2,
typename T = mln_argument(A1)>
83 void get_result(result_1& r1, result_2& r2) const;
87 mln_result(A1)
first() const;
89 mln_result(A2)
second() const;
111 template <
typename A1,
typename A2>
114 template <
typename T>
126 # ifndef MLN_INCLUDE_ONLY
128 template <
typename A1,
typename A2,
typename T>
135 template <
typename A1,
typename A2,
typename T>
144 template <
typename A1,
typename A2,
typename T>
149 a1_.take_as_init_(t);
150 a2_.take_as_init_(t);
153 template <
typename A1,
typename A2,
typename T>
162 template <
typename A1,
typename A2,
typename T>
171 template <
typename A1,
typename A2,
typename T>
180 template <
typename A1,
typename A2,
typename T>
185 mln_result(A1) tmp = a1_.to_result() - a2_.to_result();
189 template <typename A1, typename A2, typename
T>
195 r1 = a1_.to_result();
196 r2 = a2_.to_result();
199 template <
typename A1,
typename A2,
typename T>
204 return a1_.to_result();
207 template <
typename A1,
typename A2,
typename T>
212 return a2_.to_result();
217 template <
typename A1,
typename A2,
typename T>
225 template <
typename A1,
typename A2,
typename T>
234 template <
typename A1,
typename A2,
typename T>
239 return a1_.is_valid() && a2_.is_valid();
242 # endif // ! MLN_INCLUDE_ONLY
249 #endif // ! MLN_ACCU_MINUS_HH