Nick Sabalausky:
T opIndex(size_t row, size_t col) const {
immutable size_t i = this.dim.offset(row, col);
if (i >= this.dim.size) {
// TODO - have to learn exception handling in D first.
:P
}
return this.data[i];
}
No need for the bounds check. D already does bounds checks
automatically
But the row-column bounds of the matrix are not the same as the
1D bounds of the 1D array. You can have out-of-column-bounds and
still be inside the 1D bounds. So that test should go in the
precondition and it should test row and col separately:
T opIndex(in size_t row, in size_t col) const pure nothrow
in {
assert(row < nRows);
assert(col < nCols);
} body {
return data[dim.offset(row, col)];
}
Bye,
bearophile