我有一个 C++ 模板化类
// Definition
template <typename T>
class MyCLass {
public:
typedef typename T::S MyS; // <-- This is a dependent type from the template one
MyS operator()(const MyS& x);
};
// Implementation
template <typename T>
MyCLass<T>::MyS MyClass<T>::operator()(const MyClass<T>::MyS& x) {...}
我想要的是当
operator()
是 MyS
时,重载运算符 double
的行为有所不同。我想过特化,但是考虑到特化应该作用于类型相关的类型,在这种情况下怎么办?谢谢
最佳答案
您可以将工作转发给一些私有(private)重载函数:
template <typename T>
class MyCLass {
public:
typedef typename T::S MyS;
MyS operator()(const MyS& x) { return operator_impl(x); }
private:
template<typename U>
U operator_impl(const U& x);
double operator_impl(double x);
};
关于c++ - 如何根据类型相关类型专门化 C++ 模板类函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18844942/