关于这个问题:How to create specialization for a single method in a templated class in C++? ...
我有这门课:
template <typename T>
class MyCLass {
public:
template <typename U>
U myfunct(const U& x);
};
// Generic implementation
template <typename T>
template <typename U>
U MyCLass<T>::myfunct(const U& x) {...}
我想为 double
专门化 myfunct
。
这是我的做法:
// Declaring specialization
template <>
template <typename T>
double MyCLass<T>::myfunct(const double& x);
// Doing it
template <>
template <typename T>
double MyCLass<T>::myfunct(const double& x) {...}
但它不起作用。
最佳答案
这在 C++ 中是不可能的。如果您还特化了所有封闭类模板,则只能特化一个成员函数模板。
但无论如何,重载 函数模板通常比专门化它们更好(有关详细信息,请参阅 article by Herb Sutter )。所以只需这样做:
template <typename T>
class MyCLass {
public:
template <typename U>
U myfunct(const U& x);
double myfunct(double x);
};
关于c++ - 如何将模板化成员函数专门化为 C++ 中的模板化类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18845878/