我正在尝试使函数模板专门化,但是出现错误(标题),并且我不知道如何解决它。我猜这是由于我在模板特化中使用了混合类型。这个想法只是在特化中将int用作double。非常感谢。
template <typename T>
T test(T x) { return x*x; }
template <>
double test<int>(int x) { return test<double>(x); }
最佳答案
真正。
因为您定义了test()
template <typename T>
T test(T x) { return x*x; }
接收
T
类型并返回相同的T
类型。当您定义
template <>
double test<int>(int x) { return test<double>(x); }
您正在定义一个接收
int
值并返回不同类型(double
)的特殊化。因此,与
T test(T)
不匹配。您可以通过重载来解决问题
double test(int x) { return test<double>(x); }