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
. К сожалению, 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));
Но Я не могу позвонить с на
, потому что opIndex
чистый. Я мог бы временно удалить pure
из opIndex
, но это вызывает длинную цепочку отмен, потому что другие чистые методы вызывают opIndex
. Отсутствие возможности вызвать на
также исключает возможность создания моей собственной функции для перехода к assert
.
Итак, что еще можно попробовать? Я просто хочу напечатать такие значения, когда утверждение не выполняется.