A prescindere dall'errore (risolvibile con una member function template), stai facendo un grosso errore concettuale: gli indici di matrice che poni sono costanti e non possono / debbono essere modificati per nessun motivo (poco importa se fai un'allocazione dinamica).
Altrimenti corri il rischio (voluto o meno) di avere una Matrix<int,10,20> che in realtà ha come limiti reali 4,3 (per esempio). E questo in virtù della funzione resize() che hai scritto.
In poche parole se vuoi usare indici costanti nel template, devi considerare la matrice di dimensioni fisse.

Grosso modo la regola aurea per i template è: un template è per sempre.