相关疑难解决方法(0)

特定成员的模板专业化?

是否可以专门化模板类的特定成员?就像是:

template <typename T,bool B>
struct X
{
    void Specialized();
};

template <typename T>
void X<T,true>::Specialized()
{
    ...
}

template <typename T>
void X<T,false>::Specialized()
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

当然,这段代码无效.

c++ templates c++-faq specialization

24
推荐指数
2
解决办法
6822
查看次数

具有多个模板参数的模板专业化

说我有这个:

template<typename T, int X>
class foo 
{
public:
  void set(const T &t);
};

template<typename T, int X>
void foo::set<T, X>(const T &t)
{
  int s = X;
  // ...etc
}
Run Code Online (Sandbox Code Playgroud)

我可以将函数类型'T'专门化,但是将'X'作为模板参数吗?

class bar;

template<int X>
void foo::set<bar, X>(const bar &t)
{
  int s = X;
  // ...etc
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?

c++ templates template-specialization

5
推荐指数
1
解决办法
3895
查看次数

C++方法模板专门化仅适用于一个索引

我想只为一个类的一个索引执行模板特化.例如,在下面的代码中,我想在第一个类为int时创建一个特化,而不管第二个类是什么.有没有办法实现这个?

template <class K, class V>
class myclass {
    public:
        void myfunc(K,V);
};

template <class K, class V>
myclass<K,V>::myfunc(K key, V value) {
...
}

template< ,class V>
myclass<int,V>::myfunc(int key, V value) {
...
}
Run Code Online (Sandbox Code Playgroud)

c++ templates template-meta-programming

4
推荐指数
1
解决办法
213
查看次数

部分模板专门化更大类的单个方法

我有以下课程;

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++部分方法专业化似乎更相关,但它建议专门化整个类(在我的情况下这是非常大的).是否可以专门化整个班级,但实际上只专注于这一种方法?

c++ templates

4
推荐指数
1
解决办法
554
查看次数