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];
}
Hoy esta afirmación ha fallado, y quería ver los valores reales de row
y col
. Desafortunadamente, no es como assert
writeln
o writefln
, así que no puedo hacer algo como:¿Cómo imprimir más cuando falla la aserción?
assert(col + row * Col < Row * Col, "index out of bounds. row: %d col: %d", row, col);
incluso intenté esto:
assert(col + row * Col < Row * Col, "index out of bounds" ~ to!string(row)~ " " ~ to!string(col));
Pero no puedo llamar to
porque es puro opIndex
. Podría eliminar temporalmente pure
de opIndex
, pero eso desencadena una cadena larga de undos porque otros métodos puros llaman al opIndex
. No poder llamar al to
también elimina la posibilidad de crear mi propia función para pasar al assert
.
Entonces, ¿qué más hay que probar? Solo quiero imprimir esos valores cuando la afirmación falla.