我正在尝试使函数模板专门化,但是出现错误(标题),并且我不知道如何解决它。我猜这是由于我在模板特化中使用了混合类型。这个想法只是在特化中将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); }

07-24 09:46
查看更多