c++模版编程纳闷

c++模版编程困惑
C/C++ code

template<class T,int n>
void CMatrix<T,n>::SubMetrix(int line, int column,CMatrix<T,3>& m) const
{
    assert(line>0&&line<=(n-2));
    assert(column>0&&column<=(n-2));
    for(int i=1;i<=9;++i)
        m.ChangeValue(i,operator()(line+(i-1)/3,column+(i-1)%3));
}


说明:CMatrix<T,n>是定义的一个n行n列的模版矩阵,上面的函数实现取子矩阵的功能
参数CMatrix<T,3>& m是取一个3X3的矩阵,可以实现
现在我想取一个任意阶的矩阵,第三个参数该如何定义呢?

------解决方案--------------------
line和column是做什么的??
------解决方案--------------------
line和column是做什么的??
------解决方案--------------------
C/C++ code

template<class T,int n,int nSub>
void CMatrix<T,n>::SubMetrix(int line, int column,CMatrix<T,nSub>& m) const

------解决方案--------------------
模版有时不如Code Generation好用。