我有以下课程;
template<int N, int M, int K>
class BaumWelch
{
//lots of stuff
const TransitionMatrixTemplate<N, M> randomA()
{ //.... }
}
Run Code Online (Sandbox Code Playgroud)
现在我想专门randomA
研究N = 1 的方法.我该怎么做?
我尝试了这个问题:模板化的一个方法的模板特化,但它似乎不适用于部分特化.这个问题:C++部分方法专业化似乎更相关,但它建议专门化整个类(在我的情况下这是非常大的).是否可以专门化整个班级,但实际上只专注于这一种方法?
我想专门
randomA
研究N = 1 的方法.我该怎么做?
您已经发现不允许对函数进行部分特化.
但是,您可以完全专门化代码的"详细"实现.
template<int TheN>
detail_randomA();
const TransitionMatrixTemplate<N, M> randomA()
{
return detail_randomA<N>();
}
Run Code Online (Sandbox Code Playgroud)
在课堂宣言之外:
template<int N, int M, int K>
template<int TheN>
BaumWelch<N,M,K>::detail_randomA()
{
//lots of stuff when N != 1
}
template<int N, int M, int K>
template<>
BaumWelch<N,M,K>::detail_randomA<1>()
{
//lots of stuff when N == 1
}
Run Code Online (Sandbox Code Playgroud)