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];
}
Oggi questa asserzione non è riuscita e volevo vedere i valori effettivi di row
e col
. Unfortunetly, assert
non è come writeln
o writefln
, quindi non posso fare qualcosa di simile:Come stampare di più quando l'asserzione fallisce?
assert(col + row * Col < Row * Col, "index out of bounds. row: %d col: %d", row, col);
Ho provato anche questo:
assert(col + row * Col < Row * Col, "index out of bounds" ~ to!string(row)~ " " ~ to!string(col));
ma non posso chiamare to
perché opIndex
è puro . Potrei temporaneamente rimuovere pure
da opIndex
, ma questo innesca una lunga catena di annullamenti perché altri metodi puri chiamano opIndex
. Non essere in grado di chiamare to
elimina anche la possibilità di creare la mia funzione per passare a assert
.
Quindi, che altro c'è da provare? Voglio solo stampare tali valori quando l'asserzione fallisce.