矩阵只有在方形(M==N
)时才具有LU分解。有一种简单的方法可以禁用class lu
和方法luFactorization
iff M!=N
吗?
template<int M, int N>
class matrix {
// lots and lots of operators and stuff
// ...
class lu {
// ...
}
lu luFactorization() {
// ...
}
}
答案 0 :(得分:5)
定义&#34;简单&#34;。 :)
模板部分专业化确实有效:
template <int M, int N>
class matrix {
// class lu, function luFactorization *not* defined
};
template <int N>
class matrix<N,N> {
// class lu, function luFactorization defined
class lu { };
lu luFactorisation() { /* ... */ }
};
如果两种型号都有很多行李,您可以将部分或全部行李移至共同的超级舱。您还可以考虑制作lu
和luFactorisation
非会员模板。