我想知道为什么模板特化有意义?
下面的东西不是等价的吗?
模板特化:
template <typename T>
void f(T t) {
something(t);
}
template <>
void f<int>(int t) {
somethingelse(t);
}
非模板函数而不是特化:
void f(int t) {
somethingelse(t);
}
我相信这些是相同的,因为非模板功能将始终是首选。
最佳答案
这是我想出的答案:
如果模板参数不是被定义函数的参数则不同:
template <typename T>
void f() {
T t;
something(t);
}
template <>
void f<int>() {
int t;
somethingelse(t);
}
在这种情况下定义:
void f() {
int t;
somethingelse(t);
}
将使所有模板版本无法使用。
也许其他人有更好的主意。 :)
关于c++ - 为什么要使用模板特化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11758158/