只特化一个类模板的某一个成员函数解决方法
只特化一个类模板的某一个成员函数
有类定义如下
现在只想在模板参数B为16时对函数Func进行特化,应该怎么做?
搜了半天也没找到可行的解决方案,希望大家帮帮忙,谢谢
------解决方案--------------------
答案我记得写在《C++ templates》上,自己认真翻翻吧。
我记得是:不可以。但是,我听说部分编译器扩展支持。
------解决方案--------------------
class A
{
public:
A(){}
~A(){}
template <class T>
void func(T t) {cout << t;}
}
int main()
{
A a;
a.func(100);
return 0;
}
------解决方案--------------------
//输出helloworld
有类定义如下
template<class T, unsigned B>
class Base
{
//应被特化的函数
void Func(){}
};
现在只想在模板参数B为16时对函数Func进行特化,应该怎么做?
搜了半天也没找到可行的解决方案,希望大家帮帮忙,谢谢
------解决方案--------------------
答案我记得写在《C++ templates》上,自己认真翻翻吧。
我记得是:不可以。但是,我听说部分编译器扩展支持。
------解决方案--------------------
class A
{
public:
A(){}
~A(){}
template <class T>
void func(T t) {cout << t;}
}
int main()
{
A a;
a.func(100);
return 0;
}
------解决方案--------------------
template<class T, unsigned B>
class Base
{
public:
void Func()
{
if (B == 16)
{
cout << "helloworl";
}
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Base<int,16> base;
base.Func();
}
//输出helloworld