26 #ifndef MLN_ACCU_PAIR_HH
27 # define MLN_ACCU_PAIR_HH
35 # include <mln/core/concept/meta_accumulator.hh>
37 # include <mln/accu/internal/base.hh>
38 # include <mln/metal/is_a.hh>
39 # include <mln/metal/unqualif.hh>
57 template <
typename A1,
typename A2,
typename T = mln_argument(A1)>
81 void get_result(result_1& r1, result_2& r2) const;
85 mln_result(A1)
first() const;
87 mln_result(A2)
second() const;
109 template <
typename A1,
typename A2>
112 template <
typename T>
124 # ifndef MLN_INCLUDE_ONLY
126 template <
typename A1,
typename A2,
typename T>
133 template <
typename A1,
typename A2,
typename T>
142 template <
typename A1,
typename A2,
typename T>
147 a1_.take_as_init_(t);
148 a2_.take_as_init_(t);
151 template <
typename A1,
typename A2,
typename T>
160 template <
typename A1,
typename A2,
typename T>
169 template <
typename A1,
typename A2,
typename T>
171 std::pair<mln_result(A1), mln_result(A2)>
174 std::pair<mln_result(A1), mln_result(A2)> tmp(a1_.to_result(), a2_.to_result());
178 template <
typename A1,
typename A2,
typename T>
184 r1 = a1_.to_result();
185 r2 = a2_.to_result();
188 template <
typename A1,
typename A2,
typename T>
193 return a1_.to_result();
196 template <
typename A1,
typename A2,
typename T>
201 return a2_.to_result();
206 template <
typename A1,
typename A2,
typename T>
214 template <
typename A1,
typename A2,
typename T>
223 template <
typename A1,
typename A2,
typename T>
228 return a1_.is_valid() && a2_.is_valid();
231 # endif // ! MLN_INCLUDE_ONLY
238 #endif // ! MLN_ACCU_PAIR_HH