【发布时间】:2014-07-17 23:20:16
【问题描述】:
我可以专门化一个模板:
template <class T> T f(T x){ ... }
template <> int f(T x) { ... }
据我所知,我不能专攻一整套T?例如对于几种数字类型,例如:
template <class T> T f(T x){ ... }
template <> (int, double) f(T x) { ... }
圆括号 (int, double) 将代表一整套类型。
【问题讨论】:
-
T 是函数的返回类型。
-
您可以使用
std::enable_if创建重载或使用标签调度。 -
您应该使用 std::enable_if 和 type traits 来指定您希望由部分特化处理的类型的特征。请注意,没有任何其他方法来解决重载解析的返回类型会导致您遇到麻烦