【发布时间】:2012-08-22 12:57:15
【问题描述】:
假设我有一个模板函数:
template<typename T>
void f(T t)
{
...
}
我想为所有原始整数类型编写一个特化。最好的方法是什么?
我的意思是:
template<typename I where is_integral<I>::value is true>
void f(I i)
{
...
}
编译器为整数类型选择第二个版本,为其他所有类型选择第一个版本?
【问题讨论】:
-
C++11 中的函数有模板特化吗?我认为在 C++03 中它只是重载。
-
我一直在寻找类似的东西,但失败了。我所能做的就是定义一个普通的模板,然后在里面检查给定的参数是否是整数类型
-
@AlexanderChertov 在 C++03 中有,但 it is complicated。这同样适用于 C++11。
-
@AlexanderChertov:是的,即使在 C++03 中,函数模板也可以特化,但不能部分特化。