【发布时间】:2010-05-14 14:32:17
【问题描述】:
根据这个问题: Calling template function without <>; type inference 我将在未来使用的圆形函数现在看起来像:
template < typename TOut, typename TIn >
TOut roundTo( TIn value ) {
return static_cast<TOut>( value + 0.5 );
}
double d = 1.54;
int i = rountTo<int>(d);
但是,只有将它用于舍入到整数数据类型(如 char、short、int、long、long long int 以及它是无符号对应物)时才有意义。 如果它将与 TOut As float 或 long double 一起使用,它将提供 s***。
double d = 1.54;
float f = roundTo<float>(d);
// aarrrgh now float is 2.04;
我正在考虑函数的指定重载,但是 ...
这是不可能的...
你会如何解决这个问题?
非常感谢提前
哎呀
【问题讨论】:
-
负数呢?例如对于-1.54,您的函数会向上取整到-1,而不是向下取整到-2? (如果您实施了 Alex Martelli 的修复)
-
@Jacob 你说的没错,这是函数的下一个问题
标签: c++ templates function return