8#ifndef DESIGNLAB_LOOP_UTIL_H_
9#define DESIGNLAB_LOOP_UTIL_H_
24class DoubleIntRange final {
26 class Iterator final {
33 Iterator(
int i,
int j,
int j_max) : i(i), j(j), j_max(j_max) {}
35 std::tuple<int, int>
operator*()
const {
return std::make_tuple(i, j); }
37 Iterator& operator++() {
49 return i != other.i || j != other.j;
53 DoubleIntRange(
const int i_max,
const int j_max)
54 : i_max_(i_max), j_max_(j_max) {}
56 Iterator begin()
const {
return Iterator(0, 0, j_max_); }
58 Iterator end()
const {
return Iterator(i_max_, 0, j_max_); }
constexpr VECTOR operator*(const VECTOR &vec, const float s)
constexpr bool operator!=(const unexpected< E > &lhs, const unexpected< E > &rhs)