index_t operator-(char const c) const { return index_t(i - as_i(c), j - as_j(c)); }
index_t& operator-=(char const c) { i -= as_i(c); j -= as_j(c); return *this; }
index_t& operator+=(char const c) { i += as_i(c); j += as_j(c); return *this; }
index_t operator+(char const c) const { return index_t(i + as_i(c), j + as_j(c)); }
template <> int cif_array::as<int >(int row) const { return as_i(row); }