16 #ifndef dealii_synchronous_iterator_h
17 #define dealii_synchronous_iterator_h
20 #include <deal.II/base/config.h>
22 #include <deal.II/base/exceptions.h>
27 DEAL_II_NAMESPACE_OPEN
51 template <
typename Iterators>
80 template <
typename Iterators>
87 template <
typename Iterators>
95 template <
typename Iterators>
111 template <
typename Iterators>
116 return std::get<0>(*a) < std::get<0>(*b);
128 template <
typename Iterators>
133 Assert(std::distance(std::get<0>(*b), std::get<0>(*a)) >= 0,
135 return std::distance(std::get<0>(*b), std::get<0>(*a));
144 template <
typename I1,
typename I2>
146 advance(std::tuple<I1, I2> &t,
const unsigned int n)
148 std::advance(std::get<0>(t), n);
149 std::advance(std::get<1>(t), n);
157 template <
typename I1,
typename I2,
typename I3>
159 advance(std::tuple<I1, I2, I3> &t,
const unsigned int n)
161 std::advance(std::get<0>(t), n);
162 std::advance(std::get<1>(t), n);
163 std::advance(std::get<2>(t), n);
171 template <
typename I1,
typename I2,
typename I3,
typename I4>
173 advance(std::tuple<I1, I2, I3, I4> &t,
const unsigned int n)
175 std::advance(std::get<0>(t), n);
176 std::advance(std::get<1>(t), n);
177 std::advance(std::get<2>(t), n);
178 std::advance(std::get<3>(t), n);
188 template <
typename I1,
typename I2>
201 template <
typename I1,
typename I2,
typename I3>
215 template <
typename I1,
typename I2,
typename I3,
typename I4>
232 template <
typename Iterators>
246 template <
typename Iterators>
261 template <
typename Iterators>
266 return (std::get<0>(*a) != std::get<0>(*b));
269 DEAL_II_NAMESPACE_CLOSE