К сожалению, вы не можете специализировать функцию для определенных параметров шаблона, как это, вы должны сделать весь класс.Поскольку вы не хотите перекодировать весь объект, вы, вероятно, хотите использовать наследование.
//shared code
template<typename T, size_t N, size_t M>
class BaseMatrix
{
//existing code
};
// non-square general case
template<typename T, size_t N, size_t M=N>
class Matrix : public BaseMatrix<T,N,M>
{
//forwarding headers
Matrix (const Matrix<T,N,M>& b) : BaseMatrix<T,N,M>(b) {}
};
//square matrix specialization
template<typename T, size_t N>
class Matrix : public BaseMatrix<T,N,N>
{
//forwarding headers
Matrix (const Matrix<T,N,M>& b) : BaseMatrix<T,N,M>(b) {}
T Determinant();
};