这个问题是这个问题之后的后续问题。实际问题是Visual Studios 2012 不支持函数模板的默认模板参数,如此列表所示。
由于 Visual Studios 2012 不支持默认模板参数,是否有任何解决方法可以在没有它的情况下获得相同的结果?那么是否可以定义一个模板函数,例如
template <typename T, typename Ret = T>
Ret round(T val, Ret ret = Ret()) {
return static_cast<Ret>(
(val >= 0) ?
floor(val + (T)(.5)) :
ceil( val - (T)(.5))
);
}
不使用默认模板参数?该功能作为
auto a = round(5.5, int()); // int a = 6
auto b = round(5.5); // double b = 6.0