Real opIndex(size_t row, size_t col = 0) const pure nothrow {
assert(col + row * Col < Row * Col, "index out of bounds.");
return _data[col + row * Col];
}
Сегодня это утверждение не удалось, и я хотел видеть фактические значения row
и col
. Unfortunetly, assert
не нравится writeln
или writefln
, так что я не могу сделать что-то вроде:Как печатать больше, когда утверждение не удается?
assert(col + row * Col < Row * Col, "index out of bounds. row: %d col: %d", row, col);
Я даже попытался это:
assert(col + row * Col < Row * Col, "index out of bounds" ~ to!string(row)~ " " ~ to!string(col));
Но я не могу назвать, потому что to
opIndex
чисто , Я мог временно удалить pure
с opIndex
, но это вызывает длинную цепочку отмен, потому что другие чистые методы вызывают opIndex
. Невозможность позвонить to
также исключает возможность создания моей собственной функции для перехода на assert
.
Итак, что еще можно попробовать? Я просто хочу напечатать такие значения, когда утверждение терпит неудачу.