成员函数的模板专门化 我最近在C++中发现了 >模板特化< /COD> > template <typename T> void fct(void) {} template <> void fct<int>(void) {} int main(void) { fct<int>(); return 0; }

成员函数的模板专门化 我最近在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

我注意到,模板专门化在主作用域或命名空间中工作,但在结构或类中不起作用

我在stackoverflow上发现了一些关于使用命名空间的内容,如以下代码所示:

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>() {}