成员函数的模板专门化 我最近在C++中发现了 >模板特化< /COD> > template <typename T> void fct(void) {} template <> void fct<int>(void) {} int main(void) { fct<int>(); return 0; }
我注意到,模板专门化在主作用域或命名空间中工作,但在结构或类中不起作用 我在stackoverflow上发现了一些关于使用命名空间的内容,如以下代码所示:成员函数的模板专门化 我最近在C++中发现了 >模板特化< /COD> > template <typename T> void fct(void) {} template <> void fct<int>(void) {} int main(void) { fct<int>(); return 0; },c++,templates,C++,Templates,我注意到,模板专门化在主作用域或命名空间中工作,但在结构或类中不起作用 我在stackoverflow上发现了一些关于使用命名空间的内容,如以下代码所示: namespace myNameSpace { template <typename T> void fct(void) {} template <> void fct<int>(void) {} } class MyClass { public: template &l
namespace myNameSpace {
template <typename T>
void fct(void) {}
template <>
void fct<int>(void) {}
}
class MyClass {
public:
template <typename T>
static void fct(void) {
myNameSpace::fct<T>();
}
};
int main(void) {
MyClass::fct<int>();
return 0;
}
名称空间myNameSpace{
模板
void fct(void){}
模板
void fct(void){}
}
类MyClass{
公众:
模板
静态空隙fct(空隙){
myNameSpace::fct();
}
};
内部主(空){
MyClass::fct();
返回0;
}
我做错了什么?是否可以使用成员函数进行模板专门化?如果没有,最好的解决方法是什么?有没有比使用名称空间更好的方法来解决这个问题?在类定义之后编写专门化:
class MyClass
{
public:
template <typename T>
static void fct(void) {}
};
template <>
void MyClass::fct<int>() {}
class-MyClass
{
公众:
模板
静态void fct(void){}
};
模板
void MyClass::fct(){}
添加全局范围内成员函数的专门化,如图所示这正是我要搜索的:谢谢!有人能把描述这一点的部分放在标准中吗?我知道这是真的,但我从来都不知道为什么:-P。应该提到的是,对于非静态成员函数,它的工作方式和语法都是一样的。
namespace myNameSpace {
template <typename T>
void fct(void) {}
template <>
void fct<int>(void) {}
}
class MyClass {
public:
template <typename T>
static void fct(void) {
myNameSpace::fct<T>();
}
};
int main(void) {
MyClass::fct<int>();
return 0;
}
class MyClass
{
public:
template <typename T>
static void fct(void) {}
};
template <>
void MyClass::fct<int>() {}