是否可以专门化模板类的特定成员?就像是:
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)
当然,这段代码无效.
说我有这个:
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)
这可能吗?
我想只为一个类的一个索引执行模板特化.例如,在下面的代码中,我想在第一个类为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) 我有以下课程;
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++部分方法专业化似乎更相关,但它建议专门化整个类(在我的情况下这是非常大的).是否可以专门化整个班级,但实际上只专注于这一种方法?