gpt4 book ai didi

c++ - 更大类的单个方法的部分模板特化

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:19:40 25 4
gpt4 key购买 nike

我有以下类(class);

template<int N, int M, int K>
class BaumWelch
{
//lots of stuff
const TransitionMatrixTemplate<N, M> randomA()
{ //.... }
}

现在我想专门针对 N=1 的方法 randomA。我该怎么做?

我试着回答这个问题:Template specialization of a single method from a templated class ,但它似乎不适用于部分特化。本题:C++ partial method specialization似乎更相关,但它建议对整个类(class)进行特化(对我来说这相当大)。是否可以特化整个类,但实际上只特化这个方法?

最佳答案

I would like to specialize the method randomA for N=1. How can I do it?

您发现函数的偏特化是不允许的。

但是,您可以完全专门化代码的“详细”实现。

  template<int TheN>
detail_randomA();

const TransitionMatrixTemplate<N, M> randomA()
{
return detail_randomA<N>();
}

在类声明之外:

  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
}

关于c++ - 更大类的单个方法的部分模板特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16174036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com