关于这个问题: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) {...}
我希望myfunct
专门针对double
。
这就是我的所作所为:
// 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) {...}
但它不起作用。
答案 0 :(得分:4)
这在C ++中是不可能的。如果您还专门化所有封闭的类模板,则只能专门化成员函数模板。
但无论如何,重载函数模板通常更好,而不是专门化它们(详情见article by Herb Sutter)。所以只需这样做:
template <typename T>
class MyCLass {
public:
template <typename U>
U myfunct(const U& x);
double myfunct(double x);
};